这段代码执行的时候,首先主函数的 static{System.out.println("B");} 会执行,打印B
然后 执行static{System.out.println("C");} 打印C
接着执行 第一个new A(); 这是会加载类A,会先执行static{System.out.println("A");},打印A,然后执行 System.out.println("D"); 打印D,
接着执行第二个 new A(); ,这是只会执行 System.out.println("D"); 打印D
最后执行 System.out.println("E"); 打印E, 所以正确的结果是 BCADDE
这里需要注意的是 类A里面的的静态代码块只执行一次,所以只打印了一次A
(静态代码块是给类初始化的,当类被加载到内存时,就会执行,而且只执行一次) |