public void method() {
String s; // 編譯錯誤:可能未賦值
System.out.println(s);
}
null/0/false)。
class Demo { String s; // 自動初始化為 null
public static void main(String[] args) { System.out.println(new Demo().s); // 輸出 null }}
public/protected/private 訪問修飾符(隱式 default)。final 修飾局部變量(常量或匿名內部類捕獲)。public int addOne(final int x) {
return ++x; // 編譯錯誤:無法對 final 基本類型賦值
}
public void modify(final User user) {
user.setName("NewName"); // 合法:修改對象屬性
user = new User(); // 編譯錯誤:嘗試改變引用指向
}
final 修飾的實例變量(非 static)不會獲得默認值,必須在聲明時、實例初始化塊或構造器中顯式賦值,且構造器執行完前必須完成賦值。
class Demo {
final int i = 0; // 聲明時賦值
// 或
final int j;
{ j = 10; } // 實例初始化塊
// 或
final int k;
public Demo() { k = 20; } // 構造器賦值
}
| 變量類型 | 默認值 | final 行為 |
|---|---|---|
| 局部基本類型 | 無 | 值不可變 |
| 局部引用類型 | 無 | 引用不可變,對象可變 |
| final 實例變量 | 無 | 構造器結束前必須顯式初始化 |
| 非 final 實例變量 | 有(null/0/false) | 可選初始化 |