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

Java 代碼塊全解析:普通代碼塊、構造代碼塊、靜態代碼塊執行順序與應用場景

     編輯:Java 綜合教學

三類代碼塊定義與執行時機

類型語法執行時機執行次數典型用途
普通代碼塊方法內 { ... }方法調用時,按順序執行每次調用限制變量作用域、邏輯分組
構造代碼塊類內 { ... }創建對象時,優於構造器執行每次 new多構造器公共初始化邏輯
靜態代碼塊static { ... }類加載時(JVM 首次使用類)僅一次靜態資源初始化、單例創建、註冊驅動

執行順序鐵律

靜態代碼塊/靜態字段初始化(按定義順序)
    ↓
main() 方法入口
    ↓
構造代碼塊/實例字段初始化(按定義順序)
    ↓
構造器方法體

代碼驗證

public class Demo {
    { System.out.println("構造代碼塊"); }
    static { System.out.println("靜態代碼塊"); }
    public Demo() { System.out.println("構造器"); }
    public static void main(String[] args) {
        System.out.println("main 開始");
        new Demo();
        System.out.println("---");
        new Demo();
    }
}
// 輸出:
// 靜態代碼塊
// main 開始
// 構造代碼塊
// 構造器
// ---
// 構造代碼塊
// 構造器

繼承鏈中的執行順序

父類靜態代碼塊 → 子類靜態代碼塊 → 父構造代碼塊 → 父構造器 → 子構造代碼塊 → 子構造器

關鍵限制

  • 靜態代碼塊不能在方法內部定義
  • 靜態代碼塊不能直接訪問實例變量/方法,需通過對象引用
  • 構造代碼塊隸屬於對象,可訪問所有成員

最佳實踐

  • JDBC 驅動註冊、單例模式饿漢式初始化 → static { }
  • 多構造器共享邏輯(如集合初始化、配置加載) → 構造代碼塊
  • 方法內臨時變量隔離、複雜邏輯分段 → 普通代碼塊
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved