在java类中,是先执行类的构造函数还是先执行类的私有非静态变量

举例子:

package test_instance;

public class TestClassLoaderTime {  
       
       public TestClassLoaderTime(){  
            System.out.println("构造器执行");  
       }
       
       {  
             System.out.println("静态代码块执行");  
       }  
       static Demo2 demo2 = new Demo2();  
       
       private Demo3 demo3 = new Demo3();  
       
       public static void main(String[] args) {  
              System.out.println("main方法执行");  
              new TestClassLoaderTime();  
              System.out.println("TestClassLoaderTime实例化过");  
        }  
       
    }  


执行结果:

Initialization the Demo2.....
main方法执行
静态代码块执行
Initializaiton the Demo3....
构造器执行
TestClassLoaderTime实例化过

所以是按照如下顺序执行的:

1.Demo2的构造函数执行   (静态属性)
2.main方法执行  
3.静态代码块执行  
4.Demo3的构造函数执行    (非静态属性)
5.构造器执行               
6.TestClassLoaderTime实例化过  

 

posted @ 2016-11-27 16:55  Big_Foot  阅读(2428)  评论(0编辑  收藏  举报