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

Java 變量與常量定義規範:命名、初始化、作用域與 final 語義

     編輯:Java 相關知識

變量聲明三要素

類型 變量名 [= 初始值]; // 分號結束,是完整語句
  • 類型:基本類型(8 種)或引用類型(類/接口/數組)。
  • 命名規則:
    • 字母(Unicode Letter)、_、$ 開頭,後接字母/數字/_/$。
    • 區分大小寫,長度無限制。
    • 不能使用關鍵字/保留字(goto、const 等)。
    • 慣例:駝峰命名 camelCase,布爾類型常用 is/has/can 前綴。
  • 初始化:
    • 局部變量必須顯式初始化後才能使用,無默認值。
    • 成員變量(字段)有默認值:0/0.0/false/null。
    • 聲明處初始化與分離賦值效果等價,但前者更安全(杜絕未初始化讀取)。

作用域與生命周期

變量類型聲明位置作用域生命周期
局部變量方法/構造器/代碼塊內從聲明處到所在塊 } 結束方法調用棧幀存活期
參數變量方法簽名整個方法體方法調用期間
實例字段類內部、方法外整個類(含內部類),private 僅本類對象創建到 GC 回收
類字段static 修飾整個類,public 全項目可見類加載到卸載(應用結束)

遮蔽規則:局部變量可遮蔽同名字段,用 this.field 訪問字段。

常量定義

// 編譯期常量(宏替換)
static final int MAX_SIZE = 100;
static final String DEFAULT_NAME = "Unknown";

// 運行期常量(引用不可變,對象內容可能可變)
final List list = new ArrayList<>();
list.add("A"); // 合法:修改對象內容
// list = new ArrayList<>(); // 編譯錯誤:引用不可變
  • final 修飾基本類型 → 值不可變;修飾引用類型 → 引用不可變(指向對象不可變)。
  • 命名慣例:全大寫 + 下劃線分隔(SNAKE_CASE)。
  • static final 基本類型/字面量字符串為編譯期常量,調用處直接內聯,極高性能。

進階:有效 final(Effectively Final)

Java 8+ Lambda/匿名內部類捕獲局部變量要求 final 或事實上 final(僅賦值一次):

int count = 0;
Runnable r = () -> System.out.println(count); // ok,count 未再賦值
count++; // 編譯錯誤:count 不再是 effectively final

最佳實踐清單

  1. 儘可能用 final:參數、局部變量、字段,減少可變狀態,利於線程安全與 JIT 優化。
  2. 變量聲明就近原則:在首次使用前聲明,縮小作用域。
  3. 一行一聲明:int a=1, b=2; ✗ → 分行 ✓,便於註釋、調試、diff。
  4. 避免「魔術數字」:提取為具名常量。
  5. 集合/數組字段:final 修飾引用,內容仍可修改;需不可變視圖用 Collections.unmodifiableList()、List.copyOf()(Java 10+)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved