為什么順序是這樣輸出的?
public class HelloWorld {
? ??
? ? String name; // 聲明變量name
String sex; // 聲明變量sex
static int age;// 聲明靜態(tài)變量age
? ??
? ? // 構(gòu)造方法
public HelloWorld(){?
System.out.println("通過構(gòu)造方法初始化name");
name = "tom";
}
? ??
? ? // 初始化塊
{?
System.out.println("通過初始化塊初始化sex");
sex = "男";
}
? ??
? ? // 靜態(tài)初始化塊
static {?
System.out.println("通過靜態(tài)初始化塊初始化age");
age = 20;
}
? ??
public void show() {
System.out.println("姓名:" + name + ",性別:" + sex + ",年齡:" + age);
}
? ??
public static void main(String[] args) {
? ? ? ??
? ? ? ? // 創(chuàng)建對象
HelloWorld hello = new HelloWorld();
// 調(diào)用對象的show方法
? ? ? ? hello.show();
? ? ? ??
? ? ? ??
}
}
運行結(jié)果:
通過靜態(tài)初始化塊初始化age
通過初始化塊初始化sex
通過構(gòu)造方法初始化name
姓名:tom,性別:男,年齡:20
2016-05-04
因為規(guī)定就是這樣,不管靜態(tài)初始化塊、初始化塊、構(gòu)造方法在程序里的順序如何,程序運行時靜態(tài)初始化塊先運行,然后普通初始化塊,最后執(zhí)行構(gòu)造方法。