Java 中靜態初始化區塊和實例初始化區塊的執行順序
使用Java 類別時,必須了解靜態初始化區塊和實例初始化區塊的執行順序執行實例初始化區塊。這些區塊執行重要的操作,例如分配初始值以及初始化類別和物件成員。
實例初始化程式區塊
執行用大括號 { } 括起來的實例初始化程式區塊每次建立類別的實例時。它們按照它們在類別內程式碼中出現的順序執行。此行為在所有類別中都是一致的。
靜態初始化區塊
靜態初始化區塊也用花括號 { } 括起來,前面有 static 關鍵字,在下列情況下執行該類別已載入。它們不與任何特定實例關聯,並且僅執行一次,無論創建的實例數量如何。
特定執行順序
Java 語言規格(JLS)定義靜態初始化區塊的執行順序:
範例
考慮以下程式碼範例:
class Grandparent { static { System.out.println("Static - Grandparent"); } } class Parent extends Grandparent { static { System.out.println("Static - Parent"); } } class Child extends Parent { static { System.out.println("Static - Child"); } }
執行main 方法時,會產生以下輸出:
Static - Grandparent Static - Parent Static - Child
這表示靜態初始化區塊按照父級-> 父級-> 的順序執行。子類別。
例外
此規則有一個值得注意的例外。如果父類定義了一個從未被引用的類,則其靜態初始化區塊將不會被執行。這是因為類別載入器僅初始化明確需要的類別。
以上是Java 中靜態初始化區塊和實例初始化區塊的執行順序是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!