更新時間:2022-08-24 09:53:25 來源:動力節點 瀏覽1358次
相信大家對JVM是什么已經有所了解,在高層次上,JVM 執行以下步驟:
首先,加載和鏈接類。然后,這個過程的“初始化”階段處理靜態變量初始化。最后,調用與該類關聯的main 方法。
在 Java 中,靜態變量也稱為類變量。也就是說,它們屬于一個類而不是一個特定的實例。結果,類初始化將初始化靜態變量。
相反,一個類的實例會初始化實例變量(非靜態變量)。一個類的所有實例共享該類的靜態變量。
讓我們以StaticVariableDemo類為例:
public class StaticVariableDemo {
public static int i;
public static int j = 20;
public StaticVariableDemo() {}
}
首先,JVM為類StaticVariableDemo創建一個Class對象。接下來,靜態字段初始值設定項為靜態字段分配一個有意義的默認值。在上面的示例中,類變量i首先使用int默認值零初始化。
文本順序適用于靜態字段。首先,i將初始化,然后j將被初始化。之后,該類及其靜態成員將對其他類可見。
讓我們再舉一個例子:
public class StaticVariableDemo {
public static int z;
static {
z = 30;
}
public StaticVariableDemo() {}
}
在這種情況下,Java變量初始化將按順序進行。例如,JVM 最初將變量z分配給默認的int值 0。然后,在靜態塊中,它被更改為 30。
最后,讓我們以外部 StaticVariableDemo類中的嵌套類為例:
public class StaticVariableDemo {
public StaticVariableDemo() {}
static class Nested {
public static String nestedClassStaticVariable = "test";
}
}
在這種情況下,StaticVariableDemo類加載了Nested類。它將初始化靜態變量nestedClassStaticVariable。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習