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、执行子类的构造函数

如果类已经被加载:

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

你可能感兴趣的:(JAVA变量代码块等加载顺序)