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

Java final 關鍵字深度解析(一):基本用法與物件測試

     編輯:J2SE

初識 final

final 是 Java 中常見的關鍵字,用於修飾類、方法、變數。本文從變數層面切入,透過代碼示例說明其對基本類型、String 以及物件引用的影響。

代碼示例:FinalDemo(片段)

package zy.pro.jbd.demo;

public class FinalDemo {
    final int numInt1 = 16;
    final String str = "zy";
    final String str1; // 空白 final,必須在建構子初始化

    public FinalDemo() {
        str1 = "zy";
    }

    private void testFinalInt() {
        // numInt1 += 1; // 編譯錯誤:cannot assign a value to final variable
        System.out.println(numInt1);
    }

    private void testFinalString() {
        // str = str + "aaaaa"; // 編譯錯誤
        System.out.println(str);
    }
}

嘗試修改 numInt1 或 str 皆會導致編譯錯誤,確認 final 基本類型與 String 值不可變。

物件引用測試

// 測試類 A
package zy.pro.jbd.testbase;
public class A {
    int t = 10;
    public void setT(int t) { this.t = t; }
    public int getT() { return t; }
}

// 在 FinalDemo 中
final A a = new A();
public void testFinalObject() {
    a.setT(29); // 允許修改物件內部狀態
    System.out.println("t: " + a.getT()); // 輸出 t: 29
}

結果顯示 a 參考指向的物件內部屬性 t 可被修改,但若嘗試 a = new A(); 則編譯失敗。

關鍵結論

  • final 變數必須初始化(宣告時或建構子中)。
  • 基本類型與 String:值不可變。
  • 物件引用:引用不可變,物件內容可變。

本文來自編程入門網:原文連結

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