Java 變量是程序操作數據的基本單元,嚴格區分局部變量、實例變量(成員變量)、類變量(靜態變量)三大類。本文詳細講解聲明語法、初始化規則、作用域、內存分配、默認值與代碼實戰,助你建立紮實的變量模型。
type identifier [= value] [, identifier [= value] ...] ;
type:數據類型(基本類型或引用類型)。identifier:變量名,遵循駝峰命名法。int a, b, c;
int d = 3, e, f = 5;
byte z = 22;
double pi = 3.14159;
char x = 'x';
String name = "Java";
| 特性 | 局部變量 | 實例變量 | 類變量 |
|---|---|---|---|
| 聲明位置 | 方法、構造器、代碼塊內部 | 類中、方法/構造器/代碼塊外部 | 類中、用 static 修飾、方法外部 |
| 創建/銷毀 | 方法執行時創建,結束銷毀 | 對象實例化時創建,對象銷毀時銷毀 | 類加載時創建,類卸載/程序結束銷毀 |
| 內存區域 | 棧 | 堆(屬於對象) | 方法區(元空間) |
| 默認值 | 無,必須顯式初始化 | 有(數值0、boolean false、引用 null) | 有(同實例變量) |
| 訪問修飾符 | 不可使用 | 可用(public/protected/private/default) | 可用 |
| 訪問方式 | 直接變量名 | 對象引用.變量名 | 類名.變量名(推薦)或對象.變量名 |
| 線程安全 | 線程私有,安全 | 多線程共享,需同步 | 全局共享,需同步 |
作用域僅限聲明它的塊內({ })。
public class Test {
public void pupAge() {
int age = 0; // 初始化
age = age + 7;
System.out.println("Puppy age is: " + age); // 輸出 7
}
public static void main(String[] args) {
new Test().pupAge();
}
}
public void pupAge() {
int age; // 未初始化
age = age + 7; // 編譯錯誤:variable age might not have been initialized
}
規則:局部變量必須初始化後才能使用,否則編譯不通過。
private + getter/setter)。public class Employee {
public String name; // 公開
private double salary; // 私有
public Employee(String empName) {
name = empName;
}
public void setSalary(double empSal) {
salary = empSal;
}
public void printEmp() {
System.out.println("name: " + name);
System.out.println("salary: " + salary);
}
public static void main(String[] args) {
Employee e = new Employee("Ransika");
e.setSalary(1000);
e.printEmp(); // name: Ransika, salary: 1000.0
}
}
static 修飾,屬於類,所有對象共享唯一副本。final 定義常量:public static final String DEPT = "DEV"; 常量名全大寫。static { salary = 2000; }。Employee.DEPT(推薦)或 emp.DEPT(不推薦)。public class Employee {
private static double salary;
public static final String DEPARTMENT = "Development";
public static void main(String[] args) {
salary = 1000;
System.out.println(DEPARTMENT + " average salary: " + salary);
// Development average salary: 1000
}
}
變量類型決定了生命週期、可見性、內存佈局與併發特性。吃透這三類變量,是寫出健壯、高效 Java 代碼的基石。