Странное поведение при использовании скобок в 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();

статический блок выполняется только в первый раз.

40
задан gprathour 7 January 2015 в 07:00
поделиться