1. **
------------begin a::a------------
a::a, from = a的物件
a::a, a.num01 = 0
a::a, b.num02 = 0
a::a, b.instance_a = null
------------end a::a------------
------------begin a::a------------
a::a, from = a的物件
a::a, a.num01 = 1
a::a, b.num02 = 1
a::a, b.instance_a = cn.zzz.day03.a@7852e922
------------end a::a------------
------------start b::b------------
b::b, from = b的物件
b::b, b.num02 = 1
b::b, a.num02 = 0
b::b, a.instance02_b = null
b::b, a.instance01_a = cn.zzz.day03.a@70dea4e
b::b, a.finalint = 97
b::b, a.finalstr = finalstr
b::b, a.finalinteger = null
------------end b::b------------
main, a.num01 = 1
main, b.num01 = 0
------------begin a::a------------
a::a, from = a的物件
a::a, a.num01 = 1
a::a, b.num02 = 1
a::a, b.instance_a = cn.zzz.day03.a@7852e922
------------end a::a------------
main, c.instance = cn.zzz.day03.a@5c647e05
3.初始化過程分析:(只分析列印的第乙個建構函式中)
(1)只有主動請求乙個類時,該類才會初始化。初始化僅包括靜態變數、函式等靜態部分
(2)繼承關係時先初始化父類,再初始化子類
(3)靜態變數會按照宣告順序,依次宣告並設定該型別的預設值,(此時不賦值為初始化的值)
(4)宣告完畢後,再按照宣告順序依次設定為初始化的值,如果沒有初始化則跳過
(5)當初始化到a.num01 = b.num02時,暫停初始化a.num01,設定當前類為b,跳轉到步驟3並執行
(6)當初始化到 b.instance_a = new a("a的物件")時,暫停初始化b.instance_a, 例項化a並賦值給b.instance_a
(7)(接上)例項化a的過程中,需要b.num02, b.num02的當前值為預設值0。 【b.instance_a的值,但是後者還未初始化並處於暫停狀態】; b.instance_a也是如此,當前值為null。
final非靜態變數初始化
size medium final變數可以在任何可以被始化的地方被始化,具體應該是建構函式之前或建構函式中,但只能被初始化一次.一旦被初始化後就不能再次賦 值 重新指向其它物件 作為成員變數一定要顯式初始化,而作為臨時變數則可以只定義不初始化 當然也不能引用 即使是作為乙個類中的成員變數,也還可以在...
C語言靜態變數初始化問題
以前在學習 語言中,看到了這麼一行 static int arr 100 這是一行很正常的 但是我 細心 的發現作者在使用它的時候並沒有初始化。書上的解釋是,用static修飾的變數會自動初始化。為什麼會被初始化呢?首先我們看一段話 可執行程式和記憶體映像的區別在於 可執行程式位於磁碟上,記憶體映像...
Java靜態變數初始化的坑
如圖所示的 class singleton public static singleton getinstance public class test 如圖所示的 執行之後的結果為 count 1 count 1 而這和我們想象中的兩個值分別為1,2不一樣,這是因為在test中呼叫getinstan...