關於類載入時靜態成員變數的賦預設值和賦初始值問題

2022-09-06 19:30:13 字數 1219 閱讀 3680

/**

* @author yanwu12138

* @date 2020-06-03 20:25:33.

* * describe:

* 類載入時靜態你成員變數的賦值過程:

* * 一:loadclass(類載入)

* * 1. 將class物件載入到記憶體中

* * 2. 給class物件的靜態成員變數賦預設值

* * 3. 給class物件的靜態成員變數賦初始值

* * 二:newobject(建立物件)

* * 1. 給object物件申請記憶體空間

* * 2. 將object物件載入到記憶體

* * 3. 給object物件的靜態成員變數賦預設值

* * 4. 給object物件的靜態成員變數賦初始值

*/public class d03classloaderprocedure

/*** 1. 將 count_01 物件載入到記憶體

* 2. 給 count 屬性賦預設值:0

* 3. 給 count_01 屬性賦預設值:null

* 4. 給 count 屬性賦初始值:2

* 5. 給 count_01 屬性物件賦初始值:new count_01()

* 注意:此時的 count 值為:2,在第 5 步給 count_01 屬性賦初始值時會呼叫 count_01 的構造方法

* 所以:count 會 ++,最終 count 值為:3

*/private static class count_01

}/**

* 1. 將 count_02 物件載入到記憶體

* 2. 給 count_02 屬性賦預設值:null

* 3. 給 count 屬性賦預設值:0

* 4. 給 count_02 屬性賦初始值:new count_02()

* 5. 給 count 屬性賦預設值:2

* 注意:在第 4 步給 count_02 屬性賦初始值時會呼叫 count_02 的構造方法,此時的 count 還沒有賦初始值,只有預設值,所以此時 count為:0,count++為:1

* 在第 5 步給count 屬性賦預設值時會用 2 覆蓋 count++:1 的值,所以 count 最終值為:2

*/private static class count_02

}}

類的靜態成員變數

通過物件名能夠訪問public成員變數,每個物件的成員變數都是專屬的,成員變數不能再物件之間共享,先來看乙個例子 include class test test intgetcount test gtest intmain 結果 sice sice g a.c sice sice a.out cou...

類的靜態成員變數

新需求 統計在程式執行期間某個類的物件數目 保證程式的安全性 不能使用全域性變數 隨時可以獲取當前物件的數目 incldue class test test intgetcount test gtest intmain 輸出結果為 1 1 1,沒有達到使用者需求!每個成員都擁有乙個變數,不是公共的,...

類的靜態成員變數

在c 中可以定義靜態成員變數 靜態成員變數屬於整個類所有 靜態成員變數的生命週期不依賴於任何物件 可以通過類名直接訪問公有靜態成員變數 所有物件共享類的靜態成員變數 可以通過物件名訪問公有靜態成員變數 靜態成員變數 靜態成員變數的特性 在定義時直接通過static關鍵字修飾 靜態成員變數需要在類外單...