首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 靜態成員深度解析:static 方法、變量與初始化塊執行順序

     編輯:Java 相關知識

一、static 方法訪問規則

  1. 靜態方法中可直接調用同類靜態成員(變量/方法),不能直接訪問非靜態成員。
  2. 若需在靜態方法中使用非靜態成員,必須 先創建對象,再通過對象引用訪問。
  3. 實例方法中可直接訪問靜態與非靜態成員,無限制。
  4. 靜態方法 不能直接調用非靜態方法,同樣需通過對象調用。

靜態方法訪問靜態成員示例 靜態方法通過對象訪問非靜態變量 實例方法訪問靜態與非靜態成員 靜態方法通過對象調用非靜態方法

二、static 初始化塊(靜態代碼塊)

定義與特點

  • 使用 static { ... } 定義,類加載時 自動執行一次。
  • 僅能初始化 靜態變量,不能對實例變量賦值。
  • 一個類中可有多個靜態塊,按聲明順序依次執行。

執行順序驗證

public class InitOrderDemo {
    static { System.out.println("1. 靜態初始化塊"); }
    { System.out.println("2. 實例初始化塊"); }
    public InitOrderDemo() { System.out.println("3. 構造方法"); }

    public static void main(String[] args) {
        new InitOrderDemo();
        System.out.println("--- 分割線 ---");
        new InitOrderDemo();
    }
}

輸出結果:

1. 靜態初始化塊
2. 實例初始化塊
3. 構造方法
--- 分割線 ---
2. 實例初始化塊
3. 構造方法

初始化塊定義示例 驗證代碼完整版 運行輸出結果

三、總結:類加載與實例化完整順序

  1. 父類靜態變量/靜態塊(按順序)
  2. 子類靜態變量/靜態塊(按順序)
  3. 父類實例變量/實例塊
  4. 父類構造方法
  5. 子類實例變量/實例塊
  6. 子類構造方法

靜態塊只在 類首次加載 時執行一次,後續 new 對象不再觸發。此特性常用於單例模式初始化、驅動註冊、配置預加載等場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved