Initialization and Cleanup

2018-07-03 15:52 更新

Initialization and Cleanup

5. 初始化和清理

5.7 構(gòu)造器初始化

5.7.1 初始化順序

類內(nèi)部變量定義的先后順序決定了其初始化的順序,并且會在任何方法(包括構(gòu)造器,與順序無關(guān))被調(diào)用之前也會得到初始化。對于靜態(tài)對象與非靜態(tài)對象:先初始化靜態(tài)對象,然后是非靜態(tài)對象。

5.7.2 靜態(tài)數(shù)據(jù)的初始化

靜態(tài)數(shù)據(jù)只占用一份存儲區(qū)域,static 關(guān)鍵字不能用于局部變量,因?yàn)樗荒茏饔糜谟颉H绻粋€域是靜態(tài)的基本類型域且未對其初始化,那么它就會獲得基本類型的標(biāo)準(zhǔn)初值;如果是一個對象引用,則初始化為 null.

靜態(tài)初始化只有在必要時才會進(jìn)行,且只被初始化一次,即如果不創(chuàng)建相應(yīng)的對象或是引用相應(yīng)的靜態(tài)對象,那么則不會被初始化。

對象創(chuàng)建過程:

  1. 構(gòu)造器實(shí)際上也是靜態(tài)方法。Java 解釋器首先查找類路徑定位相應(yīng) class 文件。
  2. 載入 class 文件,執(zhí)行靜態(tài)初始化,靜態(tài)初始化只在類對象首次加載的適合進(jìn)行一次。
  3. 使用 new 創(chuàng)建對象時首先將在堆上為對象分配足夠的存儲空間。
  4. 存儲空間清零,故其所有基本類型數(shù)據(jù)置為默認(rèn)值。
  5. 執(zhí)行所有定義處的初始化動作。
  6. 執(zhí)行構(gòu)造器。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號