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

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

這段代碼怎么運行的?

http://img1.sycdn.imooc.com//567128a90001eb8207660567.jpg

我認為運行結果為

http://img1.sycdn.imooc.com//5671294e00010faf03590105.jpg

還有不明白創建類對象hello2的意思

正在回答

3 回答

最后輸出的結果應該是:

通過靜態初始化塊為靜態變量num3賦值
通過初始化塊為變量num2賦值
通過構造方法為變量num1賦值
num1:91

num2:74

num3:83
通過初始化塊為變量num2賦值
通過構造方法為變量num1賦值

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

_Jack_Han_

HelloWorld hello2=new HelloWorld();調用的是構造方法,所以后面再次輸出“通過構造方法為變量num1賦值”。為什么還會輸出一次初始化塊呢?
2015-12-30 回復 有任何疑惑可以回復我~

樓上不對啊

加載一個類時,先執行靜態初始化塊,再執行普通初始化塊,最后執行構造方法

所以 結果就是 num3,num2,num1,樓主說的是正確的

為什么創建hello2?

因為靜態初始化塊,在類第一次加載時執行,之后就不會執行了,但它是一直存在的,因為第一次執行之后會把它保存在內存中,所以一直存在,你可以測試一下,new hello2 的時候 不會執行“通過靜態...”那句話,但輸出hello2.num3時 還可以得出值是83。

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

聽見你流淚 提問者

多謝,還有一點不明就是:我知道會輸出“通過.... ”,不明白為什么也會輸出”num “
2015-12-16 回復 有任何疑惑可以回復我~

應該是num1、num2、num3的順序輸出啊。你現在能理解什么是類什么是對象嗎,建議你在看看前面類和對象那一章節

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

舉報

0/150
提交
取消

這段代碼怎么運行的?

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

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

幫助反饋 APP下載

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

公眾號

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