在java中,其应该是先于所有的方法执行。
下面是测试代码:
1 1 public class Test1 { 2 2 static{ 3 3 System.out.println("执行静态初始化块test1..."); 4 4 } 5 5 { 6 6 System.out.println("执行初始化块test1"); 7 7 } 8 8 public Test1(){ 9 9 System.out.println("执行test1构造函数"); 1010 } 1111 } 1212 1313 1414 1515 public class Test2 extends Test1{ 1616 static{ 1717 System.out.println("执行静态初始化块test2..."); 1818 } 1919 { 2020 System.out.println("执行初始化块test2"); 2121 } 2222 public Test2(){ 2323 System.out.println("执行test2构造函数"); 2424 } 2525 } 2626 2727 2828 2929 public class Test3 extends Test2{ 3030 static{ 3131 System.out.println("执行静态初始化块test3..."); 3232 } 3333 { 3434 System.out.println("执行初始化块test3"); 3535 } 3636 public Test3(){ 3737 System.out.println("执行test3构造函数"); 3838 } 3939 } 4040 4141 4242 4343 ---------------------------------------------------------------------------------------------------- 4444 4545 public class Test { 4646 public static void main(String[] args){ 4747 Test3 t = new Test3(); 4848 } 4949 }
运行结果如图:

从结果即可看出,静态初始化块的执行顺序十分靠前,并且在静态初始化块之间,谁在程序的前面谁先执行。