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

Java 靜態方法與靜態初始化塊完整筆記:從語法到記憶體模型

     編輯:Java 綜合教學

靜態方法

  • static 修飾,屬於類而非實例
  • 可直接呼叫同類 靜態成員(欄位/方法)
  • 不可直接存取非靜態成員(需 new ClassName().instanceField)
  • main 方法即標準靜態方法入口

靜態初始化塊

static {
    // 類載入時自動執行,僅執行一次
    // 僅能初始化 static 欄位
}
  • 類載入階段(ClassLoader.defineClass 後)由 JVM 執行
  • 多個靜態塊按聲明順序依序執行
  • 不可拋出受檢異常(只能 try-catch 或拋 RuntimeException)

初始化順序總表

1. 父類 static 欄位 → 父類 static 塊
2. 子類 static 欄位 → 子類 static 塊
3. 父類 instance 欄位 → 父類 instance 塊 → 父類建構子
4. 子類 instance 欄位 → 子類 instance 塊 → 子類建構子

封裝、繼承、多態核心速查

特性關鍵點
封裝private 欄位 + public getter/setter;隱藏實作細節
繼承單繼承;extends;子類擁有父類非 private 成員
多態向上轉型自動、向下轉型需強轉 + instanceof 守衛

訪問修飾符可見性矩陣

本類同包子類其他
private✓✗✗✗
default✓✓✗✗
protected✓✓✓✗
public✓✓✓✓

final 關鍵字四大用法

  • final class:不可被繼承
  • final method:不可被覆寫
  • final field:宣告時或建構子中必須且僅能賦值一次
  • final variable:參考不變(物件內容仍可變)

super 關鍵字三大用途

  1. super.field / super.method():存取父類被遮蔽成員
  2. super(...):子類建構子第一行顯式呼叫父類建構子
  3. 若父類無無參建構子,子類必須顯式 super(...)

Object 核心方法重寫指南

  • toString():預設 ClassName@hashCode,建議輸出業務關鍵欄位
  • equals():預設比較記憶體位址,業務類必須重寫(滿足自反/對稱/傳遞/一致/非空)
  • hashCode():與 equals 契約綁定,同樣欄位參與計算

抽象類 vs 介面(JDK 8+)

維度abstract classinterface
方法實現可有實例方法default/static 方法可有實現
欄位任意隱含 public static final
建構子可有無
多實現單繼承多實現

匿名內部類經典場景

new Thread(new Runnable() {
    @Override public void run() { /* ... */ }
}).start();

// 介面單方法 → Lambda 替代
Runnable r = () -> { /* ... */ };
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved