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

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

本題執行順序與結果問題。

53941e320001fdd507670575.jpg

53941e880001cb8003530223.jpg

輸出結果為什么不是這樣子?main函數上面3個輸出完不應該就到創建hello了,創建hello2都要執行一次num2初始化塊和num3這個構造方法,為什么hello沒有啊,請大家對比下輸出結果,給我講解一下謝謝。

通過靜態初始化塊為靜態變量num3賦值

通過初始化塊為變量num2賦值

通過構造方法為變量num1賦值

通過初始化塊為變量num2賦值

通過構造方法為變量num1賦值

num1:91

num2:74

num3:83

通過初始化塊為變量num2賦值

通過構造方法為變量num1賦值



正在回答

3 回答

已經將懂了謝謝各位,之前提問輸出結果打字太著急,多打了幾個字給大家造成誤解抱歉

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

運行結果是這樣的:

通過靜態初始化塊為靜態變量num3賦值

通過初始化塊為變量num2賦值

通過構造方法為變量num1賦值

num1:91

num2:74

num3:83

通過初始化塊為變量num2賦值

通過構造方法為變量num1賦值

關于為什么不是你那樣,其中最大的原因是程序中本來就沒有你的那些輸出語句“通過非靜態初始化塊為變量num2賦值”

至于為什么運行結果順序是上面那樣?

因為程序運行時靜態初始化塊最先被執行,然后執行普通初始化塊,最后才執行構造方法。另外,由于靜態初始化塊只在類加載時執行一次,所以當再次創建對象 hello2 時并未執行靜態初始化塊。


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

洛辰m 提問者

我就是這個意思,那個非靜態是我打字多打了。為什么創建hello不執行,hello2就要執行呢。
2018-09-25 回復 有任何疑惑可以回復我~
#2

慕瓜453346 回復 洛辰m 提問者

為什么??/
2018-09-27 回復 有任何疑惑可以回復我~

輸出結果是根據我們自己寫的代碼來的,如果寫的代碼中都沒有“非靜態”三個字,怎么會輸出“非靜態”呢?之所以會出現這些結果,是因為我們事先在特定位置寫上特定的字,這樣特定的字會根據運行的先后順序顯示。

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

洛辰m 提問者

非靜態是我打錯字了。。。我的意思是執行創建hello2時候運行了一次num2和num1,創建hello是怎么弄的,代碼的順序是怎么執行的
2018-09-25 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第二季 升級版
  • 參與學習       531142    人
  • 解答問題       6326    個

課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙

進入課程

本題執行順序與結果問題。

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

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

幫助反饋 APP下載

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

公眾號

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