在Java中使用大括号的奇怪行为

9 浏览
0 Comments

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

静态代码块只会在第一次执行时执行。

0