{
float y = 3.14;
{
float y = 3.15; // C++ 合法,Java 編譯錯誤:變數 y 已定義
}
}
C++:允許內層區塊定義同名變數,遮蔽外層,生命週期隨區塊結束。
Java:**禁止同一方法內不同區塊定義同名區域變數**,為提高可讀性、避免混淆。本質上兩者作用域規則相同,Java 額外加了限制。
delete 釋放記憶體,否則洩漏且引用失效(懸空指標)。垃圾收集器動態追蹤 new 建立的物件,**自動回收無引用物件**,開發者專注業務邏輯,消除記憶體洩漏風險。但跨作用域使用物件時,**必須主動複製/傳遞引用**,否則雖物件未回收卻無法訪問。
理解「引用作用域」與「物件生命週期」分離,是寫出正確、高效 Java 代碼的關鍵,也正是 Java 相對 C++ 降低記憶體管理認知負擔的核心所在。