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

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

為什么例題里初始化塊和構造方法執行了兩次

https://img1.sycdn.imooc.com//5c3da4810001cb8003530223.jpg

https://img1.sycdn.imooc.com//5c3da4820001fdd507670575.jpg

是因為構建了對象hello2嗎,可是為什么構建了新對象就會再次執行呢

正在回答

7 回答

在創建完一次對象后程序執行時最先但只執行一次靜態初始化,然后執行普通初始化塊最后執行構造方法,然后再開始往下運行與該對象有關的命令,hello對象后輸出了三條命令,hello2對象后面則沒有命令了,故會在第二次再輸出一次方法。

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

qq_單曲循環_ijxzB8

為什么hellow2后面沒命令再輸出一次,沒說清楚
2019-01-24 回復 有任何疑惑可以回復我~

http://www.xianlaiwan.cn/qadetail/288303

我看到了這個答案,盆友可以參考一下

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

我用eclipse試了一下,確實會執行,雖然我也不懂這是為什么,創建了對象hello2,但是對象并沒有被使用,為什么會執行呢?如果有人已經知道答案了可以告訴我一下這是為什么嗎?謝謝啦

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

感覺也是,又沒問你們為什么靜態代碼塊沒執行。

我的理解是,創建類的對象就是執行代碼塊的過程,

代碼塊已經建立輸出短語,輸出順序是優先級的問題

創建類的新的對象,還是執行同一類的代碼塊,只不過靜態變量已經排除(只在類加載執行一次)

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

全都答非所問,厲害了

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

因為構建對象,需要對對象進行初始化,就回去調用構造函數,也就是這里的構造方法和初始化塊,然后又因為靜態初始化只執行一次,所以hello2初始化的時候就只有2句。

4 回復 有任何疑惑可以回復我~

通過輸出結果,我們可以看到,程序運行時靜態初始化塊最先被執行,然后執行普通初始化塊,最后才執行構造方法。由于靜態初始化塊只在類加載時執行一次,所以當再次創建對象 hello2 時并未執行靜態初始化塊。

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

lucky高

請問什么叫類在加載時只執行一次,用通俗的話怎么理解呢,因為創建hello這個對象只不過是用了三次輸出語句,而hello2只是創建完成,因是叫hello加載了類,而hello2沒有加載類嗎?謝謝~
2019-03-03 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么例題里初始化塊和構造方法執行了兩次

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

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

幫助反饋 APP下載

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

公眾號

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