java中静态初始化块的执行顺序

在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 }

运行结果如图:

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

原文地址:https://www.cnblogs.com/wushenjiang/p/11673895.html