關于實例化過程中先后順序問題
背景:實例化過程中(這里先不包含父類),我的理解先后順序為:
靜態代碼塊
初始化為默認值(int:0,boolean:false,引用類型:null)
顯示聲明
初始化塊
構造函數中this調用的其他構造函數
主構造函數
代碼:
public?class?ConstructorTest?{ ????public?static?void?main(String[]?args){ ????????Demo?d?=?new?Demo();?//無參構造函數 ????} } class?Demo{ ????private?String?name?=?"";?//instance?field?initialization??顯示域初始化 ???? ????public?Demo(){ ????} }
問題:
根據先后順序,name先顯式初始化為"",然后再調用構造函數,查過相關資料空的構造函數的定義是:“設置為默認值”,我的理解是默認值是null。但是這里name最后的輸出是"",所以問題是:空的構造函數的默認值是什么?
PS:
真是無聊的問題,但還是望解答。
2017-08-27
你把它設置為靜態函數,系統不會自動幫你設置為默認值