面試題 JAVA中靜態塊 靜態變數載入順序詳解

2021-07-13 01:57:03 字數 1788 閱讀 4601

public

class test

static

int num = 4; //2.第二步,靜態變數和靜態**塊的載入順序由編寫先後決定

int a = 5; //6.第六步,按照順序載入變數

test()

static

static

void run() // 靜態方法,呼叫的時候才載入// 注意看,e沒有載入

}

一般順序:靜態塊(靜態變數)——>成員變數——>構造方法——>靜態方法

1、靜態**塊(只載入一次) 2、構造方法(建立乙個例項就載入一次)3、靜態方法需要呼叫才會執行,所以最後結果沒有e

}

執行main方法,程式輸出順序為: 134

5a b e 2

67 c f d 2

67 c f d

輸出結果表明,程式的執行順序為:

如果類還沒有被載入:

1、先執行父類的靜態**塊和靜態變數初始化,並且靜態**塊和靜態變數的執行順序只跟**中出現的順序有關。

2、執行子類的靜態**塊和靜態變數初始化。

3、執行父類的例項變數初始化

4、執行父類的建構函式

5、執行子類的例項變數初始化

6、執行子類的建構函式

如果類已經被載入:

則靜態**塊和靜態變數就不用重複執行,再建立類物件時,只執行與例項相關的變數初始化和構造方法。

JAVA中靜態塊 靜態變數載入順序詳解

public class test static int num 4 2.第二步,靜態變數和靜態 塊的載入順序由編寫先後決定 int a 5 6.第六步,按照順序載入變數 test static static void run 靜態方法,呼叫的時候才載入 注意看,e沒有載入 public class...

java 靜態變數 與 非靜態變數

一 建立乙個類的物件時 new 類名 時,該類的.class檔案會被載入到一段記憶體中。1.先將該類的.class檔案會被載入到一段記憶體,初始化static屬性和方法,為他們分配空間,以後一直在記憶體中,即使這個物件被銷毀。這就是不建議使用static屬性和方法的原因之一 2.copy其中非sta...

Java靜態變數和非靜態變數

記憶體分配 靜態方法和靜態變數建立之後一直使用同一塊記憶體,是連續的。非靜態方法會存在於記憶體的多個地方,是離散的。生命週期 靜態變數的生存週期是應用的生存週期。非靜態變數的存在週期取決於例項化的類的存在週期。呼叫方式 靜態變數只能是 class.靜態變數 來呼叫,類的例項不能呼叫。非靜態變數在變數...