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

Java final 與 finally 完整指南:修飾規則、初始化時機與執行保證

     編輯:Java 程式設計入門

final 修飾符詳解

1. 修飾成員變數

  • 系統不預設初始化,必須顯式賦值。
  • 初始化途徑:
    • 宣告時直接賦值
    • 實例變數:建構子、實例初始化區塊 { }
    • 靜態變數:靜態初始化區塊 static { }
    • 不可在靜態區塊初始化實例 final,不可在建構子初始化靜態 final

2. 修飾方法

  • 表示不可被子類別覆寫,可被重載。
  • private 方法隱含 final。

3. 修飾類別

  • 類別不可被繼承,所有方法隱含 final,編譯器可優化內聯,效率較高。
  • 不可與 abstract 併用,也不可修飾介面。
  • final 類別的欄位若需不可變,仍需個別加 final。

finally 區塊特性

  • 僅用於 try-catch 結構,附帶程式區塊。
  • 無論 try/catch 是否 return、拋出異常、或正常結束,finally 總會執行(除非 JVM 退出)。

經典陷阱:finally 中的 return 覆蓋 try 的 return

public static boolean test() {
    try {
        return true;
    } finally {
        return false; // 覆蓋前面的 true
    }
}
// 輸出: false

原理:JVM 先計算 try 的回傳值暫存,再執行 finally,若 finally 有 return,則以 finally 的為準。生產碼禁止在 finally 中使用 return,避免吞噬異常或邏輯錯誤。

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