韩顺平Java11——代码块

代码块

韩顺平Java11——代码块

 

韩顺平Java11——代码块

 

 

 如果构造器中有相同的语句,可以将其放入一个代码块中,这样的话不管我们调用哪个构造器,都会优先调用代码块的内容,代码块的调用顺序优先于构造器

 

 

(静态)方法只有在被调用时才执行,类加载时不执行

 

  • 使用细节

 1.static代码块是在类加载的时候执行,只执行一次

2.普通代码块是在创建对象的时候调用的,创建一次调用一次

3.类加载的三种情况:

(1)创建对象实例时(new)

(2)创建子类的对象实例,父类也会被加载(父类先加载,子类后加载)

(3)使用类的静态成员时

4.在创建一个对象时,在同一个类中各部分的调用顺序:

(1)调用静态代码块和静态属性的初始化(两者优先级一致,按定义顺序调用)

(2)调用静普通代码块和普通属性的初始化(两者优先级一致,按定义顺序调用)

(3)调用构造方法

5.构造器的最前面隐藏了 super()(调用父类的无参构造器)和调用普通代码块以及普通属性的加载,

静态成员(属性、方法、代码块)在类加载时执行,

因此优先于构造器和普通代码块执行。

韩顺平Java11——代码块

 

 韩顺平Java11——代码块

 

 执行结果:

韩顺平Java11——代码块

 

 

6.当创建一个有继承关系的子类时,各部分调用顺序:

(1)父类静态代码块和静态属性(两者优先级一致,按定义顺序调用)

(2)子类静态代码块和静态属性(两者优先级一致,按定义顺序调用)

(3)父类普通代码块和静态属性(两者优先级一致,按定义顺序调用)

(4)父类构造器

(5)子类普通代码块和静态属性(两者优先级一致,按定义顺序调用)

(6)子类构造器

7.静态代码块只能调用静态成员(属性和方法),普通代码块可以调用任意成员(属性和方法)。

上一篇:jenkins提示使用java11版本


下一篇:Java11新特性笔记