Java 類的初始化

2021-08-09 14:19:34 字數 1116 閱讀 8298

public class person 

}

person p = new person()

1、將 person.class 檔案載入到記憶體

2、在棧記憶體之中為 p 開闢空間

3、在堆記憶體中為 person 物件開闢空間

4、對 person 物件的成員變數進行預設初始化:name = null, age = 0

5、對 person 物件的成員變數進行顯示初始化:name = 「張三」,age =18

6、通過構造方法對 person 物件的成員變數賦值:name = 「李四」, age=28

7、 person 物件初始化完成,將物件位址賦值給 p

1、乙個類的靜態**塊、構造**塊、構造方法的執行流程:

靜態**塊》構造**塊》構造方法

構造**塊和構造方法會在呼叫構造的時候執行

2、靜態的內容是隨著類的載入而載入,靜態**塊的內容會優先執行

3、子類初始化之前會先對父類進行初始化

public class fu 

public fu ()

}public class zi extends fu

public fu ()

}public class testdemo

}

在 zi z 的時候會先對 zi 進行載入,而在對 zi 進行載入之前 fu 進行載入。類在載入的時候會優先載入靜態**塊,而構造**塊和構造方法在調構造的時候才會執行

fu 的靜態**塊

zi 的靜態**塊

接下來 new zi() 會先呼叫 fu 的構造,執行 fu 的構造**塊和構造方法,然後呼叫 zi 的構造**塊和構造方法

fu 的構造**塊

fu 的建構函式

zi 構造**塊

zi 的建構函式

總結:1、建立物件並非在建構函式中進行(在建構函式中可以使用 this 可以看出,在呼叫構造方法時,物件就已經存在),而是在執行 "new" 關鍵字的時候,建構函式只是為了對資料進行初始化

2、在執行 "new" 關鍵字,即建立物件的時候,會首先載入父類,然後再載入本類,載入順序為:預設初始化、顯示初始化、建構函式初始化

java 類的初始化

載入順序 啟動類的static block最先載入 父類靜態成員 靜態 塊 子類靜態成員 靜態 塊 父類例項成員 塊 父類建構函式 子類例項成員 塊 子類建構函式 class singleton public static singleton getinstence public class tes...

java類的初始化

public class finaltest public static int aa static 下面是乙個測試類 public class test 輸出結果 0 當我們將 public static final int a 0 改為 public static int a 0 輸出結果為 p...

Java類初始化2

public class test2 class t t int a 5 static int b 7 class g g 輸出 main starts g starts t starts說明 1 從main進入 輸出 main starts 定義變數t t new t 2 載入類t,初始化類t中的...