![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaSE学习
文章平均质量分 59
白猫与巧克力
这个作者很懒,什么都没留下…
展开
-
java机制下什么时候需要抛出异常?什么时候需要捕获异常?
而第二种,用try…try里面放入可能会发生异常的语句块,如果在运行期间遇到了异常,则会交给catch来处理异常(catch可以是多个,处理不同的异常),finally则是无论有没有异常发生,只要加上了就会运行。但有的时候我们会在try语句里执行别的函数比如B,这个函数B里我们假如触发了异常,它会调向try语句所在的函数A),寻找和它相匹配的catch语句,执行catch语句里面相应的异常处理程序;但是我们的throw 语句主动抛出了异常,那么程序就会到catch里面找有没有这个异常,有的话进行处理。转载 2022-10-13 15:21:08 · 2692 阅读 · 0 评论 -
java-反射
反射的概述:所在包:java.Reflection1. 动态语言:Object-C、C#、JavaScript、PHP、Python等.动态语言是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码都可以被引进,已有的函数可以被删除或是其他结构上发生变化。通俗讲就是运行时代码可以根据某些条件改变自身的结构.例如:( javaScript ) var x="a=4;b=6;alert(a+b)"; eval(x);var是万能类型,本来应该是String类型,但在运行时,经过eval原创 2022-05-03 14:10:44 · 1255 阅读 · 0 评论 -
多线程-线程池
线程池背景: 经常创建和销毁、使用量特别大的资源,比如并发情况下的线程,对性能影响很大思路: 提前创建好多个线程,放入线程池,使用时直接获取,使用完放回,避免频繁创建销毁方法:1、corePoolSize:核心池大小2、maximunPoolSize:最大线程数3、keepAliveTime:线程没有任务时多长时间会终止线程池的实现ExecutorService:线程池接口,常见子类ThreadPoolExecutor1、void execute(Runnable command):执原创 2022-03-03 22:28:55 · 82 阅读 · 0 评论 -
多线程-管程法解决线程间通信问题
管程法并发协作模型“生产者/消费者模式”---->管程法生产者:负责生产数据的模块(可能是方法,对象,线程,进程);消费者:负责处理数据的模块(可能是方法,对象,线程,进程);缓冲区:消费者不能直接使用生产者的数据,他们之间有“缓冲区”.生产者将生产好的数据放入缓冲区,消费者从缓冲区拿出数据两个线程共用一个缓冲区对象.//生产者与 消费者 鸡肉:wait()以及notifyAll(),定义一个缓冲区:管程法public class TestPC { public stati原创 2022-02-21 17:38:11 · 289 阅读 · 0 评论 -
多线程-Lock锁
synchronized和Lock锁的区别Lock是显示锁(手动开启和关闭锁,必须关闭锁), synchronized是隐式锁,出了作用域自动释放.Lock锁只有代码块锁,synchronized有代码块锁和方法锁使用Lock锁,JVM将花费较少的时间来调度线程,性能更好。并且具有更好的扩充性(提供更多主类)优先使用顺序:Lock > 同步代码块(已经进入了方法体,分配了相应资源) > 同步方法(在方法体之外)Lock(锁)从JDK 5.0开始,Java提供了强大的线程原创 2022-02-20 01:20:34 · 268 阅读 · 0 评论 -
多线程--死锁
什么是死锁?多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能运行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形.某一个同步块同时拥有“两个以上对象的锁”时,就有可能发生“死锁”的现象.例子:package com.company;//镜子mirror//口红lipstickclass LipsTick {}class Mirror {} class makeUp extends Thread { static LipsTick lipsTi原创 2022-02-19 18:25:01 · 159 阅读 · 0 评论 -
线程安全的CopyOnWriteArrayList集合
CopyOnWriteArrayList 读取和写入源码简单分析(java.util.concurrent包下)1. CopyOnWriteArrayList 读取操作的实现读取操作没有任何同步控制和锁操作,理由就是内部数组 array 不会发生修改,只会被另外一个 array 替换,因此可以保证数据安全.2. CopyOnWriteArrayList 写入操作的实现CopyOnWriteArrayList 写入操作 add() 方法在添加集合的时候 加了锁,保证同步, 避免多线程写的时候会 cop原创 2022-02-19 13:55:38 · 3639 阅读 · 0 评论 -
同步方法及同步块
由于我们可以通过private关键字来保证数据只能被方法访问,所以我们只需要针对方法提出一套机制,这套机制就是synchronized关键字,它包括两种用法:synchronized方法和synchronized块1.同步方法public synchronized void method(int args) {}synchronized方法控制对“对象”的访问,每个对象对应一把锁,每个synchronized方法都必须获得调用该方法的对象的锁才能执行,否则线程会阻塞,方法一旦执行,就独占该锁,直到方原创 2022-02-19 13:26:30 · 1255 阅读 · 1 评论 -
三大不安全线程案例
1. 不安全的买票public class Tiket implements Runnable { static int tiket = 10; boolean flag = true; @Override public void run() { while(flag) buy(); } public void buy() { //模拟买票 if (tiket <= 0) {flag=fals原创 2022-02-18 17:01:34 · 2874 阅读 · 0 评论 -
线程 同步
并发同一个对象被多个线程同时操作.下面演示抢票:public class Tiket implements Runnable{ static int tiket=10; @Override public void run() { while(tiket>0) { try { Thread.sleep(100); } catch (InterruptedException e)原创 2022-02-16 17:52:40 · 270 阅读 · 0 评论 -
了解守护线程
什么是守护线程守护线程分为用户线程和守护线程虚拟机必须确保用户线程执行完毕虚拟机不用等待守护线程执行完毕应用:如后台记录操作日志,监控内存,垃圾回收等待…设置守护线程.setDaemon(true)public class TestDaemon { public static void main(String[] args) { God god =new God(); You you=new You(); Thread thread= n原创 2022-02-16 15:14:59 · 417 阅读 · 0 评论 -
线程的优先级
线程的优先级setPriority原创 2022-02-07 16:29:32 · 164 阅读 · 0 评论 -
多线程的插队与状态监测
1. 线程插队join使用public class JoinThread implements Runnable { public static void main(String[] args) throws InterruptedException { JoinThread JoinThread = new JoinThread(); Thread thread = new Thread(JoinThread); thread.start();原创 2022-02-07 15:51:55 · 301 阅读 · 0 评论 -
3类方式实现多线程
多线程实现原创 2021-12-07 12:44:34 · 215 阅读 · 0 评论 -
java中异常抛出后代码还会继续执行吗
看到一篇关于异常博客,博主写得非常好,非常有用,所以转载回来,用于学习转载 2021-12-06 16:56:52 · 2089 阅读 · 0 评论 -
泛型的基础
泛型Java 泛型是JDK1.5中引入的一个新特性,其本质是参数化类型,把类型作为参数进行传递.常见形式泛型类泛型接口泛型方法语法一个参数: < T >多个参数: <T,K,E…>这些参数称为类型占位符,表示一种引用类型.不能为基本类型.泛型类形式: class Generic < T >{ }代码:创建一个泛型类public class Generic<T>{ //使用泛型T //1创原创 2021-11-29 17:24:06 · 249 阅读 · 0 评论 -
内部类、匿名类、常用类学习
内部类内部类是在一个类的内部定义一个完整的类.代码样例1package JavaSE.lu.InClass;public class Outer { private int id=8; //private私有属性 public void out(){ System.out.println("这是一个外部类的方法"); } class Inner{ public void in(){ System.out.pri原创 2021-11-11 11:52:00 · 122 阅读 · 0 评论 -
异常的捕获与抛出(异常的处理)
异常的捕获与抛出1.异常1.1 什么是异常?1.2 异常的分类1.3 异常的处理框架2. 异常的处理机制3. 利用try-catch-finally语句捕获异常3.1 程序样例:3.2 操作注意点:3.3 结果说明:3.4 打印错误的栈信息4. 利用throw、throws关键字抛出异常4.1 程序样例:4.2 结果说明:5.自定义异常5.1 代码样例:5.2 总结自定义类的使用方法6. 异常在实际应用中的总结经验1.异常1.1 什么是异常?英文是Exception.异常指程序运原创 2021-11-06 21:39:53 · 2833 阅读 · 0 评论 -
抽象类思考题(回答~狂神说java)
抽象类思考题1.抽象类不能new对象,那能存在构造器吗?2.抽象类存在的意义?1.抽象类不能new对象,那能存在构造器吗?问题答案1.抽象类作为类一定有构造器,而且抽象类必须有构造器。提供给子类创建对象调用父类构造器使用的。2.抽象类虽然有构造器但是抽象类不能创建对象。抽象方法没有方法体,创建对象不能执行,所以不能创建对象。抽象类的注意事项抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。理解:假设创建了抽象类的对象,调用抽象的方法,而抽象方法没有具体的方法体,原创 2021-11-05 22:43:20 · 120 阅读 · 0 评论 -
父类引用指向子类对象的注意点
父类引用指向子类对象的注意点首先看一段代码:Father类package JavaSE.lu.duotai;public class Father { static int b=7; int a=5; public void say(){ System.out.println("父亲say"); } public void write(){ System.out.println("父亲write"); }}Son原创 2021-11-05 15:31:18 · 451 阅读 · 0 评论 -
类的封装.
这里写目录标题1.封装原则2.封装定义3.private 关键字以及getXXX()、setXXX()方法的使用.3.1 private关键字3.2 get/set方法3.3 具体样例:3.4 输出结果以及说明:4.封装意义:1.封装原则程序设计要追求 高内聚,低耦合, 高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用.2.封装定义思想就是隐藏实现细节,仅对外暴露公共访问的方式,即禁止直接访问一个对象中数据对的实际表示,而通过操作接口来访问,称为信息隐原创 2021-11-04 13:24:17 · 1109 阅读 · 0 评论 -
for-each(增强for循环的要点)以及数组的输出说明
for-each(增强for循环的要点)使用for-each遍历多维数组时,要嵌套for-each循环,例如二维数组,可以在外层for循环设置接受类型为一维类型,即 int[]array,数组名是二维数组名,内层循环使用int型变量接收,数组名为外层循环接受量的数组名.代码样例:public static void main(String[] args) { int [][] b={{1,2,3},{4,5,6,7}};//2行4列的2维数组,静态初始化.原创 2021-10-30 15:51:46 · 600 阅读 · 0 评论 -
比较员工的年龄大小(继承、异类集合、static)
比较员工的年龄大小(继承、异类集合、static学习)题目: 现在存在一个staff[ ]异类集合,里面存放的是不同员工的资料,需要通过该异类集合来比较员工的年龄大小.集合中有Employee类,属性有姓名、生日,行为有自身构造方法.集合中还有Manager类,它继承了Employee类,特殊属性为部门.为了让代码难度不要过大,我们设该集合内仅有Employee和Mabager类,且数组长度为2. 现请你对原创 2021-10-28 12:07:59 · 211 阅读 · 0 评论 -
关于Java子类继承时,为什么父类要有无参构造方法
关于Java子类继承时,为什么父类要有无参构造方法当父类没有默认的构造方法的时候,子类的构造方法就会出错我们先来看几个问题1.为什么在实例化子类的对象的时候会调用先调用父类的构造方法?答:因为子类继承父类之后,获取到了父类的内容(属性/字段),而这些内容在使用之前必须先初始化,所以必须先调用父类的构造函数进行内容的初始化.2、基类在哪里调用了父类的构造方法?答:在子类的构造方法的第一行中默认(不显示)调用super();即调用了父类构造方法如果父类里面没有定义参数为空的构造方法,那么必须在子转载 2021-10-28 11:50:43 · 2124 阅读 · 1 评论 -
switch语句以及反编译源码查看
switch语句的反编译源码查看提出问题:在jdk 7版本之后,java的switch语句的变量开始支持字符串,那么java是通过什么方式编译字符串,并让switch语句识别字符串类从而运行成功?图一是源程序,图二是class文件在idea中反编译的源码,如图图一图二结论 :通过查看源程序与源码可以看出,每一个字符串其实是一个String类的对象,而每一个对象都有自己的一个hashCode,即“哈希值”,系统通过识别字符串变量的哈希值,对case语句中的字符串常量,即单存哈希值进行比较,从而找原创 2021-10-24 22:32:42 · 422 阅读 · 0 评论 -
java包机制以及javadoc命令构造API文档
java包机制以及javadoc命令构造API文档1.java的包机制当你在一个文件夹下建立两个命名相同的文档时,会出现下面的情况:图1系统会自动提示你需要重新命名,但是,当你新建一个文件夹时并将其中一个文档放入里面,则两个文档命名就可以相同了,这就是为了避免在同一个包中出现命名相同导致后续的程序出现问题:例如:图2所以,在java中,为了避免文件命名相同到导致出现问题的情况,Java中出现了包机制,一层包裹一层,这里注意:一般使用公司域名作为包名. 如百度的网址www.baidu.com原创 2021-10-24 16:15:10 · 146 阅读 · 0 评论