類中靜態 普通 構造初始化順序

2022-01-21 22:38:38 字數 863 閱讀 1971

實際上,如果嚴格區分類的初始化 和 物件的例項化的話,更容易理解:

-- 首先,初始化

靜態**塊

(注:靜態變數在底層實際上是通過靜態**塊賦值的 

如,static int a = 3;   

實際上,  static int a;     

static   

--  其次,例項化

例項**塊

建構函式

(注:例項**塊永遠在建構函式之前執行)

如果又繼承關係的話,就是, 父的初始化,子的初始化, 父的例項化,子的例項化

初始化永遠在例項化之前

乙個例子:注意區分 類初始化  和  物件例項化

public

class

test

static

public

static

void

main(string args)

}

結果:

通過例子區分下  初始化 和例項化

z是主線程,所以要初始化z,但是會先初始化x。    由於x不涉及到例項化,所以  y  只輸出了一次

C 類建構函式初始化列表和初始化順序

建構函式初始化列表以乙個冒號開始,接著是以逗號分隔的資料成員列表,每個資料成員後面跟乙個放在括號中的初始化式。例如 class cexample 建構函式內部賦值 cexample 上面的例子中兩個建構函式的結果是一樣的。上面的建構函式 使用初始化列表的建構函式 顯式的初始化類的成員 而沒使用初始化...

類初始化順序

類初始化時,jvm會先初始化所有 1,靜態屬性,靜態例項,靜態塊。2.新建例項 靜態或非靜態 時會先執行所有非靜態屬性和構造塊 非靜態屬性和構造塊執行級別相同,誰前誰先 然後構造方法。注意 1 靜態 塊不能存在於任何方法體內。2 靜態 塊不能直接訪問靜態例項變數和例項方法,需要通過類的例項物件來訪問...

類初始化順序

類初始化順序 1.靜態構造塊最先執行,並只執行一次 2.成員變數執行,但靜態成員變數早於靜態塊執行 3.構造塊從上至下依次執行 4.構造方法執行 父類早於子類 父類靜態構造塊 子類靜態構造塊 父類成員變數 父類構造塊 父類構造方法 子類成員變數 子類構造塊 子類構造方法 靜態成員變數先於靜態塊執行 ...