1.类加载的过程
初始化过程:
- 初始化父类中的静态成员变量和静态代码块 ;
- 初始化子类中的静态成员变量和静态代码java基础运行代码结果题块 ;
3.初始化父类的普通成员变量和代码块,再执行父类的构造方法;
4.初始化子类的普通成员变量和代码块,再执行子类的构造方法;
(1)初始化父类的普通成员变量和代码块,执行 Y y=new Y(); 输出Y
(2)再执行父类的构造方法;输出X
(3) 初始化子类的普通成员变量和代码块,执行 Y y=new Y(); 输出Y
(4)再执行子类的构造方法;输出Z
所以输出YXYZ
2.try-catch语句
try-catch语句用来处理异常,将可能发生异常的操作放到try部分,一旦try部分抛出异常,那么try部分立即结束,转向执行相应的catch部分。
finally{……}语句无论try{……}有没有抛出异常都会执行,并且优先于return执行。
而题目中return a+b 没有抛出异常(它们的数据类型一致,都是int 如果不一致就有可能抛出异常,执行相应的catch部分,但是它没有),所以不用执行catch部分。
要注意的点:
1.finally{}代码块比return先执行。
2.多个return是按顺序执行的的,多个return执行了一个后,后面的return就不会执行了。
3. 记住一点,不管有不有异常抛出, finally都会在return返回前执行。
3.==和equals比较
已知String a=“a”,String b=“b”,String c=a+b,String d=new String(“ab”) 以下操作结果为true的是
== 和 equals
(1)“ == ” 用于比较基本数据类型时比较的是值,用于比较引用类型时比较的是引用指向的地址。
(2)Object 中的equals() 与 “==” 的作用相同,但String类重写了equals()方法,比较的是对象中的内容
4.synchronize关键字用法
同步代码块(synchronized(this),synchronized(类实例对象),锁是小括号()中的实例对象)
同步非静态方法(synchronized method),锁的是当前对象的实例对象
获取类锁
同步代码块(synchronized(类.class)),锁是最小括号 () 中的类对象(Class对象)
同步静态方法(synchronized static method),锁是当前对象的类对象(Class 对象)
总结
有线程访问对象的同步代码块时,另外的线程可以访问该对象的非同步代码块
若锁住的是同一个对象,一个线程在访问对象的同步代码块时,另一个访问对象的同步代码块的线程会被阻塞。
若锁住的是同一个对象,一个线程在访问对象的同步方法时,另一个访问对象的同步方法的线程会被阻塞。
若锁住的是同一个对象,一个线程在访问对象的同步代码块时,另一个访问对象同步方法的线程会被阻塞,反之亦然。
同一个类的不同对象的锁互不干扰
类锁由于也是一种特殊的对象锁,因此表现和上述一致,而由于一个类只有一把对象锁,所以同一个类的不同对象使用类锁将会是同步的
类锁和对象锁互不干扰
5.在创建派生类对象,构造函数的执行顺序?
父类静态域——》子类静态域——》父类成员初始化——》父类构造块——》1父类构造方法——》2子类成员初始化——》子类构造块——》3子类构造方法;
6.创建对象
7.自动拆箱机制
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/26094.html