关于初始化块

Posted woshi123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于初始化块相关的知识,希望对你有一定的参考价值。

初始化块————
可以用static修饰,并且与其他成员一样,有static修饰的初始化块属于类,没有static修饰的初始化块属于对象实例,下面能看到具体的表现。

普通初始化块在对象初始化时,在构造器之前执行(实例变量的声明也可以看作是初始化块代码),执行完初始化块(按顺序)后才会调用构造器创建对象
静态初始化块在类初始化阶段(在创建第一个对象之前)进行,所以比普通初始化块执行要早,而且只执行一次(类没必要重复加载),而普通初始化块则要每次创建实例时都要执行一次。

(静态)初始化块都是有一个共性,就是在执行本类的初始化块之前,会先沿着继承链找到最上面的父类,沿着继承链依次向下执行各个父类的初始化块,最后才执行本类的初始化块,完成本类(或本类实例)的初始化
【因为Java系统加载并初始化某个类时,总是保证该类的所有父类(包括直接父类和间接父类)全部加载并初始化】

以上是关于关于初始化块的主要内容,如果未能解决你的问题,请参考以下文章

关于静态块静态属性构造块构造方法的执行顺序

关于static

关于构造代码块局部代码块和静态代码块的作用和区别

静态代码块构造代码块构造函数以及Java类初始化顺序

Java的静态块和初始化块分别何时执行?有啥区别?

静态代码块构造代码块构造函数以及Java类初始化顺序