為什么運(yùn)行結(jié)果會(huì)顯示這三行
通過靜態(tài)初始化塊初始化age
通過初始化塊初始化sex
通過構(gòu)造方法初始化name
主函數(shù)只是執(zhí)行hello.show()方法啊,應(yīng)該是只顯示
姓名:tom,性別:男,年齡:20
這一行啊
通過靜態(tài)初始化塊初始化age
通過初始化塊初始化sex
通過構(gòu)造方法初始化name
主函數(shù)只是執(zhí)行hello.show()方法啊,應(yīng)該是只顯示
姓名:tom,性別:男,年齡:20
這一行啊
2016-02-29
舉報(bào)
2016-03-22
此問題你可以回想一下程序的三大結(jié)構(gòu)之順序結(jié)構(gòu)。因?yàn)槟愕某绦蚴前匆筮M(jìn)行順序操作的,而你的show()方法里的數(shù)據(jù)的輸出依賴于各個(gè)方法的順序執(zhí)行,從而出現(xiàn)那樣的運(yùn)行結(jié)果。
2016-02-29
一個(gè)帶main方法的類,加載到虛擬機(jī)后,才能運(yùn)行。那么首先就執(zhí)行static靜態(tài)代碼塊,然后每構(gòu)造一個(gè)對(duì)象時(shí),再執(zhí)行初始化塊,最后執(zhí)行構(gòu)造方法。
2016-02-29
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)建對(duì)象
? ? HelloWorld hello = new HelloWorld();
// 調(diào)用對(duì)象的show方法
? ? ? ? hello.show();
? ? ? ??
}
}