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

时间:2021-06-19 19:35:08

举例子:

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实例化过