构造函数、静态变量、代码块执行顺序
在创建一个对象的时候, 会发生如下的过程:
- 查找父类是否被加载过, 没有加载则进行加载, 这时父类静态代码块随之调用
static {
....
}
-
加载子类 静态代码块 随之调用
-
调用父类的 普通代码块
-
调用父类的构造方法
-
调用子类的 普通代码块
{
//反编译class文件, 会发现其实普通代码块的代码被合并到构造方法中了. 但是在构造方法的前面执行了.
}
- 调用子类的构造方法
个人建议: 所有的静态变量要定义在静态代码块的前面.
为什么呢? 因为静态变量和静态代码块的执行顺序是根据代码编写的顺序进行执行的.
网友评论