Java類載入執行順序

2021-09-05 11:55:55 字數 1408 閱讀 5406

簡要記錄類的載入執行順序:

先說結論:

父類靜態(塊/變數)–>子類靜態(塊/變數)–>父類普通(變數/塊)–>父類構造器–>子類普通(變數/塊)–>子類構造器

具體執行過程:

程式先找到main函式,不管此時有沒有使用new進行建立物件,都會將涉及到的類(例如父類)進行類載入;

發現son類有乙個父類father類;

初始化有關father類的靜態變數與靜態塊(順序依據書寫的順序執行);

初始化有關son類的靜態變數與靜態塊(順序依據書寫的順序執行);

全部靜態初始完畢,以上過程都是建立物件之前執行,且僅執行一次;

建立son類物件son1;

初始化父類普通塊與普通變數(順序依據書寫的順序執行);

初始化父類構造器;

初始化子類普通塊與普通變數(順序依據書寫的順序執行);

初始化子類構造器;

son類物件son2同son1;

父類:

package test.loadsort;

public class father

public string str2 = println("父類普通變數2");

public static string str3 = println("父類靜態變數3");

public father()

public static string println(string str)

}

子類:

package test.loadsort;

public class son extends father

public string str2 = println("子類普通變數2");

static

public son()

public static string str3 = println("子類靜態變數3");

public static void main(string args)

}

執行結果:

父類靜態變數1

父類靜態塊2

父類靜態變數3

子類靜態變數1

子類靜態塊2

子類靜態變數3

--------靜態只執行一次--------

父類普通塊1

父類普通變數2

父類構造器3

子類普通塊1

子類普通變數2

子類構造器3

*******普通根據new次數執行*********

父類普通塊1

父類普通變數2

父類構造器3

子類普通塊1

子類普通變數2

子類構造器3

JS 的載入執行順序

近來對js在html中的載入順序有點小疑惑,遂測試分析了一把 just a test case.you are in footer.結果依次為 div標籤 before head 出現,i m in head div標籤 after head 出現,i m in body part1 div jus...

Java類載入的執行順序

那一年,呼延十又回想起被載入順序支配的恐懼,筆試題上,好幾個類,幾個方法,幾個輸出語句,讓你按照順序寫出輸出.我真的是有一句 但是呢,我們還是有了解一下的必要的,在編碼過程中有許多的應用.經常用來比較順序的,無非就是靜態 塊,普通 塊,靜態方法和普通方法.這裡直接說一下結論 先靜態後普通最後構造方法...

Spring bean 載入執行順序例項解析

問題 有乙個bean為a,乙個bean為b。想要a在容器例項化的時候的乙個屬性name賦值為b的乙個方法funb的返回值。如果只是在a裡單純的寫著 private b b private string name b.funb 會報錯說nullpointexception,因為這個時候b還沒被set進...