靜態代碼塊、靜態變量、構造方法及構造塊均是在類被加載的時候初始化。
靜態塊在類被重復調用的時候只會加載一次。
靜態代碼塊和靜態變量的執行順序是按代碼先后順序執行的。
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 }
總結執行先后順序為:靜態塊/靜態變量>構造塊>構造方法。