http://www.cnblogs.com/guoyuqiangf8/archive/2012/10/31/2748909.html
顺序如下:
父类静态初始化块
子类静态初始化块
父类非静态初始化块
父类的构造方法
子类非静态初始化块
子类的构造方法
如果有静态方法的调用的话,静态初始化块和静态方法的调用的先后顺序,是根据写在类中的先后顺序来的。
例如:下面的的情况的话,先调用静态初始化块,再调用parentStaticMethod2。
static
{
System.out.println("父类静态初始化块");
}
public static int t = parentStaticMethod2();
public static int parentStaticMethod2()
{
System.out.println("父类的静态方法2");
return 9;
}
如果把调用静态方法的赋值语句放到最前面的话,先调用parentStaticMethod2,再调用静态初始化块。
public static int t = parentStaticMethod2();
static
{
System.out.println("父类静态初始化块");
}
public static int parentStaticMethod2()
{
System.out.println("父类的静态方法2");
return 9;
}