static代码块优先于构造函数

原文链接: http://www.cnblogs.com/OSKnown/p/8676588.html
 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:先初始化属性然后才是静态初始块,然后是初始块,然后是构造方法

转载于:https://www.cnblogs.com/OSKnown/p/8676588.html

猜你喜欢

转载自blog.csdn.net/weixin_30466039/article/details/94797797