public void test() {
int a; // 編譯錯誤:variable a might not have been initialized
int b = 10; // 正確
System.out.println(b);
}
| 資料類型 | 預設值 |
|---|---|
| byte / short / int / long | 0 |
| float / double | 0.0 |
| char | '\u0000' (空字元) |
| boolean | false |
| 引用類型 | null |
public class Demo {
int num; // 自動初始化為 0
String str; // 自動初始化為 null
public void print() {
System.out.println(num + ", " + str); // 輸出:0, null
}
}
被 final 修飾的成員變數必須顯式初始化(宣告時、建構器或初始化區塊),否則編譯錯誤。
當區域變數與成員變數同名時,方法內直接使用變數名訪問的是區域變數。若需訪問成員變數,使用 this.變數名。
public class Test {
int x = 10; // 成員變數
public void method() {
int x = 20; // 區域變數
System.out.println(x); // 輸出 20
System.out.println(this.x); // 輸出 10
}
}
| 特性 | 區域變數 | 成員變數 |
|---|---|---|
| 定義位置 | 方法/區塊內 | 類別內、方法外 |
| 作用域 | 區塊內 | 整個類別 |
| 預設值 | 無(必須初始化) | 有(見上表) |
| 記憶體 | Stack | Heap |
| 生命週期 | 方法執行期間 | 物件存在期間 |
| 存取修飾詞 | 不可使用 | 可使用 |