当我运行以下代码时:
public class Test { Test(){ System.out.println("1"); } { System.out.println("2"); } static { System.out.println("3"); } public static void main(String args[]) { new Test(); } }
我希望按以下顺序获得输出:
1 2 3
但是我得到的却是相反的顺序:
3 2 1
谁能解释为什么输出顺序相反?
================
另外,当我创建多个的实例时Test:
Test
new Test(); new Test(); new Test(); new Test();
静态块 仅 在第一次执行。
这完全取决于初始化语句的执行顺序。您的测试表明此顺序为:
编辑
感谢您的评论,现在我可以引用JVM规范中的相应部分。这是详细的初始化过程。