static代码块优先于构造函数

 1     public static class TestA{
 2         TestA(){
 3             System.out.println("TestA构造函数");
 4         }
 5         static
 6         {
 7             System.out.println("TestA静态代码块");
 8         }
 9     }
10     public static class TestB{
11         private TestA Ta= new TestA();
12         
13         {
14             System.out.println("初始化代码块");
15         }
16         public TestB() {
17             System.out.println("TestB构造函数");
18         }
19         static
20         {
21             System.out.println("TestB静态代码块");
22         }
23     }
24     public static class TestC{
25         private static TestB tb1 = new TestB();
26         static
27         {
28             System.out.println("TestC静态代码块");
29         }
30 
31     }

调用

public static void main(String[] args) {
    TestC tcc = new TestC();
}

执行结果:

TestB静态代码块
TestA静态代码块
TestA构造函数
初始化代码块
TestB构造函数
TestC静态代码块

 

PS:先初始化属性然后才是静态初始块,然后是初始块,然后是构造方法

posted @ 2018-03-30 15:45  一字节  阅读(238)  评论(0编辑  收藏  举报