在java中,其应该是先于所有的方法执行。
下面是测试代码:
1 public class Test1 { 2 static{ 3 System.out.println("执行静态初始化块test1..."); 4 } 5 { 6 System.out.println("执行初始化块test1"); 7 } 8 public Test1(){ 9 System.out.println("执行test1构造函数"); 10 } 11 } 12 13 14 15 public class Test2 extends Test1{ 16 static{ 17 System.out.println("执行静态初始化块test2..."); 18 } 19 { 20 System.out.println("执行初始化块test2"); 21 } 22 public Test2(){ 23 System.out.println("执行test2构造函数"); 24 } 25 } 26 27 28 29 public class Test3 extends Test2{ 30 static{ 31 System.out.println("执行静态初始化块test3..."); 32 } 33 { 34 System.out.println("执行初始化块test3"); 35 } 36 public Test3(){ 37 System.out.println("执行test3构造函数"); 38 } 39 } 40 41 42 43 ---------------------------------------------------------------------------------------------------- 44 45 public class Test { 46 public static void main(String[] args){ 47 Test3 t = new Test3(); 48 } 49 }
运行结果如图:
从结果即可看出,静态初始化块的执行顺序十分靠前,并且在静态初始化块之间,谁在程序的前面谁先执行。