在Java編程中,我們經常需要定義一些固定不變的值,比如“一個班級最多30人”“網站的默認端口號是8080”等。這些值在程序運行過程中不會改變,我們稱之爲“常量”。在Java中,最常用的定義常量的方式是使用final關鍵字。
一、什麼是常量?¶
常量是指一旦賦值後,值就不能再被修改的變量。它和普通變量的區別在於:普通變量的值可以隨時改變,而常量的值是“只讀”的。
二、如何用final定義常量?¶
在Java中,使用final關鍵字修飾變量,使其成爲常量。定義常量的語法非常簡單:
final 數據類型 常量名 = 初始值;
例如:
// 定義一個整數常量,表示最大年齡
final int MAX_AGE = 18;
// 定義一個字符串常量,表示網站名稱
final String SITE_NAME = "Java教程";
三、定義常量的注意事項¶
- 必須初始化
常量一旦定義就不能再修改,因此聲明時必須同時賦值。如果只聲明不賦值,編譯器會報錯:
final int NUM; // 錯誤!未初始化的final變量無法定義
NUM = 100; // 錯誤!即使這裏賦值,前面聲明也不合法
- 不可重複賦值
常量的值不能被修改,嘗試修改會直接報錯:
final int COUNT = 5;
COUNT = 10; // 錯誤!無法爲最終變量COUNT賦值
四、爲什麼要用常量?¶
使用final定義常量的核心目的是避免重複賦值,提高代碼的可靠性:
- 防止意外修改:如果常量被誤改,編譯器會直接報錯,提前避免錯誤。
- 提高可讀性:常量名通常用大寫字母+下劃線分隔(如MAX_AGE),一眼就能看出這是固定值,方便理解代碼邏輯。
- 便於維護:如果需要修改常量值(比如從“18歲”改爲“20歲”),只需在定義處改一次,所有使用該常量的地方都會同步生效。
五、類常量(全局常量)¶
如果常量需要被多個類共享(比如全局配置、固定參數),可以用static final組合定義爲“類常量”。例如:
public class AppConfig {
// 類常量:所有類都可以直接訪問
public static final String DB_URL = "jdbc:mysql://localhost:3306/test";
public static final int TIME_OUT = 30; // 超時時間(秒)
}
其他類使用時,直接通過類名訪問:
// 使用類常量
String url = AppConfig.DB_URL;
int timeout = AppConfig.TIME_OUT;
六、常見誤區¶
final修飾的變量不一定是常量:如果一個final變量不賦值,或者被意外修改(雖然Java不允許),但實際中final變量只要賦值一次且不再修改,就是常量。- 對象引用與常量:
final修飾的對象引用(如final Person p),其引用地址不能變,但對象內部屬性可以修改(例如p.setName("張三")合法)。
總結¶
- 常量定義:用
final關鍵字,聲明時必須賦值,值不可修改。 - 命名規範:常量名建議全大寫,多個單詞用下劃線分隔(如
MAX_SIZE)。 - 好處:防止誤改、提高可讀性和可維護性。
通過final定義常量,可以讓代碼更健壯、清晰,減少因意外修改值導致的bug。作爲初學者,務必熟練掌握這一基礎語法!