亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

什么是靜態初始化塊在類加載是只執行一次?

什么是靜態初始化塊在類加載是只執行一次?我下面最后的幾行定義了一個新的對象helloo,但是我嘗試打印age的時候,結果還是20。(黑體字部分)



public class HelloWorld {

? ??

? ? String name; // 聲明變量name

String sex; // 聲明變量sex

static int age;// 聲明靜態變量age

? ??

? ? // 構造方法

public HelloWorld? ?() {?

System.out.println("通過構造方法初始化name");

name = "tom";

}

? ??

? ? // 初始化塊

{?

System.out.println("通過初始化塊初始化sex");

sex = "男";

}

? ??

? ? // 靜態初始化塊

? ? static? ? {?

System.out.println("通過靜態初始化塊初始化age");

age = 20;

}

? ??

public void show() {

System.out.println("姓名:" + name + ",性別:" + sex + ",年齡:" + age);

}

? ??

public static void main(String[] args) {

? ? ? ??

? ? ? ? // 創建對象

HelloWorld hello = new HelloWorld();

// 調用對象的show方法

? ? ? ? hello.show();

? ? ? ? HelloWorld helloo = new HelloWorld();

? ? ? ? System.out.println(helloo.age);

? ? ? ??

}

}


正在回答

1 回答

你創建一個對象時,相當于類的實例化,此時會對類執行一次,當你再創建一個對象時,由于靜態初始化塊只會執行一次,所以并不會再對類進行實例化了。你這最后面的System.out.println(helloo.age);是輸出hello.age,和對類執行時不一樣的。(個人看解肯能有誤?)

0 回復 有任何疑惑可以回復我~
#1

慕碼人7406720 提問者

抱歉,我還是不太了解為什么System.out.println(helloo.age);是輸出hello.age... 你的意思是說HelloWorld helloo = new HelloWorld();這句其實不起作用是嗎?
2020-12-30 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

什么是靜態初始化塊在類加載是只執行一次?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號