理解類與變數是 Java 程式設計的入門關鍵。本文以生活化類比引入概念,系統闡述類的定義、成員變數與區域變數的區別、靜態變數的共享機制,並提供詳細對比表格與程式碼範例,助你建立清晰的記憶體模型。
類是抽象概念,描述事物的共同屬性與行為;物件是類的具體實例化。
生活類比:「小汽車」是一個類,擁有顏色、輪胎數等屬性(成員變數),以及行駛等行為(方法)。寶馬 BMW 是一個具體的物件。
public class LittleCar {
private String color; // 顏色
private int numLuntai; // 輪胎數
public LittleCar(String color, int numLuntai) {
this.color = color;
this.numLuntai = numLuntai;
}
public void run() {
System.out.println(this.numLuntai + "個輪子的" + this.color + "轎車在馬路上行駛著");
}
}
public class ClassT {
public static void main(String[] args) {
LittleCar BMW = new LittleCar("黑色", 4);
BMW.run();
}
}
輸出: 4個輪子的黑色轎車在馬路上行駛著
for(int i=0;...) 中的 i)同名時,區域變數優先於成員變數。若需在區域範圍存取成員變數,可使用 this.變數名。
以 static 修飾,屬於類層級,被所有物件共享。
類名.靜態變數 或物件存取(推薦用類名)class Person {
String name; // 實例變數
static String country = "CN"; // 靜態變數
public void show() {
System.out.println(country + ":" + name);
}
}
class StaticDemo {
public static void main(String[] args) {
Person p = new Person();
System.out.println(p.country); // 物件存取
System.out.println(Person.country); // 類名存取(推薦)
}
}
| 比較項目 | 成員變數 | 區域變數 | 靜態變數 |
|---|---|---|---|
| 定義位置 | 類中,方法外 | 方法中或形式參數 | 類中,方法外 |
| 初始化值 | 有預設值 | 無,先定義後賦值 | 有預設值 |
| 呼叫方式 | 物件呼叫 | — | 物件呼叫、類名呼叫 |
| 儲存位置 | 堆記憶體 | 棧記憶體 | 方法區(靜態區) |
| 生命週期 | 與物件共存亡 | 與方法共存亡 | 與類共存亡 |
| 別名 | 實例變數 | — | 類變數 |
清晰區分三類變數的定義位置、記憶體模型、生命週期與存取方式,是撰寫高效、無 Bug Java 程式的基石。實戰中:描述物件獨特狀態用成員變數;方法內臨時計算用區域變數;全域共享資料用靜態變數。