類初始化順序問題

2021-08-20 23:57:46 字數 1323 閱讀 9267

public class test02 

public test02()

public static void main(string args)

}

執行** 結果如下:

由此可見:

(靜態變數、靜態初始化塊)>(變數、初始化塊)    >(構造器)

2  、 繼承關係下的初始化順序

class parent 

public parent()

}public class child extends parent

public child()

public static void main(string args)

}

執行**如下:

由此可見:

(父類靜態變數和父類靜態初始化塊) > (子類靜態變數和子類靜態初始化塊) >(父類變數和初始化塊)>(

父類的構造器)>(子類變數和初始化塊)>(子類構造器)

3、靜態變數和靜態初始化、變數和初始化變數的初始化順序

public class test01 

public static testa testa = new testa();

public static testb testb = new testb();

public static void main(string args) }

class testa

}class testb

}

執行結果如下:

改變初始化塊和變數的順序

public class test01 		

public static void main(string args) }

class testa

}class testb

}

執行結果如下:

由此可見:靜態初始化塊和靜態變數的先後順序是:

他們在類中出現的先後順序

類初始化順序

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

類初始化順序

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

初始化順序問題

public class initdemo 初始化塊 構造器 public initdemo public static void main string args 靜態變數 靜態初始化塊 變數初始化塊 構造器public class parent 初始化塊 構造器 public parent pu...