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