static之静态初始化块
static之静态初始化块
所有的静态初始化块都优先执行,其次才是非静态的初始化块和构造函数,它们的执行顺序是:
父类的静态初始化块
子类的静态初始化块
父类的初始化块
父类的构造函数
子类的初始化块
子类的构造函数
也就是说程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。
比如下面的代码:
运行结果:
需要特别注意:
1)静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
2)非静态初始化块的代码会在类构造函数之前执行。使用时应当养成把初始化块写在构造函数之前的习惯,便于调试。
参考:
- http://www.cnblogs.com/BlackStorm/p/5699965.html
- 慕课网 Java入门第二季