本文链接 http://blog.csdn.net/xiaodongrush/article/details/29170099
参考文章 http://my.oschina.net/leoson/blog/103251
1. 一个类中的初始化顺序
(静态变量、静态初始化块)=>(变量、初始化块、构造器)。
2. 两个具有继承关系类的初始化顺序
父类的(静态变量、静态初始化块)=> 子类的(静态变量、静态初始化块)=> 父类的(变量、初始化块、构造器)=> 子类的(变量、初始化块、构造器)。
下面举例说明:
class A { public A() { System.out.println("Constructor A"); } { System.out.println("Field A"); } static { System.out.println("Static A"); } } public class B extends A { public B() { System.out.println("Constructor B"); } { System.out.println("Field B"); } static { System.out.println("Static B"); } public static void main(String[] args) { new A(); new B(); } }new A()的结果
Static A
Static B
Field A
Constructor A
new B()的结果,静态成员和静态初始化块只会执行一次。
Field A
Constructor A
Field B
Constructor B