Strange behavior using braces in Java
问题 When I run the following code: 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(); } } I expect to get the output in this order: 1 2 3 but what I got is in reverse order: 3 2 1 Can anyone explain why it is output in reverse order? ================ Also, when I create more than one instance of Test : new Test(); new Test(); new Test(); new Test(); static block is executed