對于靜態(tài)變量、靜態(tài)初始化塊、變量、初始化塊、構造器,它們的初始化順序依次是(靜態(tài)變量、靜態(tài)初始化塊)>(變量、初始化塊)>構造器。我們也可以通過下面的測試代碼來驗證這一點:
package test;
public class InitialOrderTest {
?? ?// 靜態(tài)變量
?? ?public static String staticField = "靜態(tài)變量";
?? ?// 變量
?? ?public String field = "變量";
?? ?// 靜態(tài)初始化塊
?? ?static {
?? ??? ?System.out.println(staticField);
?? ??? ?System.out.println("靜態(tài)初始化塊");
?? ?}
?? ?// 初始化塊
?? ?{
?? ??? ?System.out.println(field);
?? ??? ?System.out.println("初始化塊");
?? ?}
?? ?// 構造器
?? ?public InitialOrderTest() {
?? ??? ?System.out.println("構造器");
?? ?}
?? ?public static void main(String[] args) {
?? ??? ?System.out.println("main() 方法");
?? ??? ?new InitialOrderTest();
?? ?}
}
//結果:
//************
//靜態(tài)變量
//靜態(tài)初始化塊
//main() 方法
//變量
//初始化塊
//構造器