静态代码块、静态变量、构造方法及构造块均是在类被加载的时候初始化。
静态块在类被重复调用的时候只会加载一次。
静态代码块和静态变量的执行顺序是按代码先后顺序执行的。
1 package cnom.test.testUtils; 2 3 public class TestStaticLoadSort { 4 5 private static String str = "h"; 6 7 public TestStaticLoadSort() { 8 System.out.println("构造方法."); 9 } 10 11 static { 12 str += "i"; 13 System.out.println("静态块"); 14 } 15 16 { 17 System.out.println("构造块"); 18 } 19 20 public static void main(String[] args) { 21 TestStaticLoadSort tss = new TestStaticLoadSort(); 22 System.out.println(tss.str); 23 TestStaticLoadSort tss1 = new TestStaticLoadSort(); 24 } 25 /** 26 * ===============输出结果============= 27 * 静态块 28 * 构造块 29 * 构造方法. 30 * hi 31 * 构造块 32 * 构造方法. 33 */ 34 }
总结执行先后顺序为:静态块/静态变量>构造块>构造方法。