在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();

}

}

我希望按以下顺序获得输出:

1

2

3

但是我得到的却是相反的顺序:

3

2

1

谁能解释为什么输出顺序相反?

================

另外,当我创建多个的实例时Test

new Test();

new Test();

new Test();

new Test();

静态块 在第一次执行。

回答:

这完全取决于初始化语句的执行顺序。您的测试表明此顺序为:

  1. 静态初始化块
  2. 实例初始化块
  3. 建设者

感谢您的评论,现在我可以引用JVM规范中的相应部分。这是详细的初始化过程。

以上是 在Java中使用花括号的奇怪行为 的全部内容, 来源链接: utcz.com/qa/399279.html

回到顶部