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

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

初始化塊執行和對象的關系


http://img1.sycdn.imooc.com//5880d1120001956c10520789.jpg

創建對象是會執行初始化塊嗎,創建對象過程不就是執行構造方法的過程嗎?和初始化塊有關系嗎?

正在回答

1 回答

????初始化塊并不是創建對象時執行的,而是第一次用到那個類的時候執行的。

????以上面這個例子來說,程序執行main方法中第一句HelloWorld hello = new HelloWorld();的時候就會執行初始化塊,而且只會執行一次。程序后面又創建了一個對象hello2,這個時候初始化塊不執行,構造方法執行。只要記住初始化塊是程序第一次調用類的時候執行(且只執行一次),而構造方法是每創建一個對象都會執行一次就行了。

????另外,它們執行的順序是:靜態初始化塊先執行,然后非靜態初始化塊再執行,最后構造方法執行。相同類型的初始化塊,按照定義時的順序執行。

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

慕粉1205048519 提問者

非常感謝!
2017-01-20 回復 有任何疑惑可以回復我~
#2

慕粉1205048519 提問者

靜態初始化塊在加載類時執行,且只執行一次。那非靜態初始化塊在什么時候執行。圖片中的代碼執行創建對象hello2時輸出了 通過初始化塊為變量num2賦值 通過構造方法為變量num1賦值 這樣的結果說明非靜態初始化塊在創建對象hello2的時候又執行了一次,對于非靜態初始化塊什么時候執行還是不太清楚。
2017-01-20 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

初始化塊執行和對象的關系

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

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

幫助反饋 APP下載

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

公眾號

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