1. 程式人生 > >成員變數初始化順序

成員變數初始化順序

 如果建立了物件,則在堆中給類的例項分配記憶體空間,
 3.首先,對例項變數,進行預設初始化
  (整型為0,浮點型為0.0,布林型為false,字元型為'\u0000',引用型為null)
  
 4.其次,執行例項變數的初始化操作
  --例項變數的初始化,使用前2種初始化方式: 宣告時直接初始化和程式碼塊
  --執行順序為:在程式碼中的出現的順序(宣告的順序)
 
 5.最後,執行建構函式(例項變數的第3中初始化方式)
 
二.繼承時,變數的初始化順序:
 1.當類第一次使用時,JVM就會載入該類,如果該類存在父類,那麼就先載入父類,這是一個遞迴過程,直到Object為止.
 在類載入中,首先進行靜態成員變數按照預設值進行初始化,
 然後按照在類中宣告的順序執行靜態程式碼塊和靜態變數的顯示初始化.
 這個過程從父類到子類,並且只會執行一次!!!
 
 2.當父類與子類的靜態程式碼初始化完成後,如果建立了類的物件,
 在初始化子類前,會先對其父類的例項變數進行預設初始化,
 然後按照在類中的宣告順序來執行程式碼塊與例項變數的顯示初始化,
 最後呼叫父類的建構函式,這也是一個遞迴過程,直到Object類為止.
 (這個過程在每次建立物件時,都會執行!!!)