JAVA变量代码块等加载顺序

平时我们在面试的时候或者笔试的时候,经常会有这样的题目,给你一段代码,让你选出打印的顺序。那么在java中 类的变量,静态代码块,匿名代码块的加载顺序是怎样的呢?我们来看下面的一段代码:


图1


图2


通过我们执行以后,发现,打印顺序是静态块(静态变量)——>成员变量——>构造方法——>静态方法 。

1、静态代码块(只加载一次) 2、构造方法(创建一个实例就加载一次)3、静态方法需要调用才会执行,所以最后结果没有e 

我们继续看:


打印类


父类


子类

执行main方法,程序输出顺序为:1 3 4 5 a b e 2 6 7 c f d 2 6 7 c f d

输出结果表明,程序的执行顺序为: 

如果类还没有被加载:

1、先执行父类的静态代码块和静态变量初始化,并且静态代码块和静态变量的执行顺序只跟代码中出现的顺序有关。

2、执行子类的静态代码块和静态变量初始化。

3、执行父类的实例变量初始化

4、执行父类的构造函数

5、执行子类的实例变量初始化

6、执行子类的构造函数

如果类已经被加载:

则静态代码块和静态变量就不用重复执行,再创建类对象时,只执行与实例相关的变量初始化和构造方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。