在Java中使用花括号的奇怪行为
当我运行以下代码时:
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();
}
}
我希望按以下顺序获得输出:
12
3
但是我得到的却是相反的顺序:
32
1
谁能解释为什么输出顺序相反?
================
另外,当我创建多个的实例时Test
:
new Test();new Test();
new Test();
new Test();
静态块 在第一次执行。
回答:
这完全取决于初始化语句的执行顺序。您的测试表明此顺序为:
- 静态初始化块
- 实例初始化块
- 建设者
感谢您的评论,现在我可以引用JVM规范中的相应部分。这是详细的初始化过程。
以上是 在Java中使用花括号的奇怪行为 的全部内容, 来源链接: utcz.com/qa/399279.html