理解概念
與普遍看法相反,您提供的程式碼片段並未證明字串是可變的。 Java 中的字串是不可變的,這意味著它們的內容無法修改。那麼,變數「a」的值是如何從「a」改為「ty」的呢?
重新分配引用
實際上,引用變數「a」被重新指派給具有不同值的新 String 物件。值為“a”的原始物件不會被更改。
如何修改字串
當字串物件被認為「修改」時,例如添加後綴使用「concat」方法,實際上會使用修改後的值建立一個新的String 物件。然後這個新物件被分配給相同的引用變量,替換原始物件。
字串常數池的作用
為了最佳化記憶體使用,Java 虛擬機(JVM) 使用稱為字串常數池的特殊區域。該池儲存對從文字或透過「new」關鍵字建立的 String 物件的參考。如果池中已存在匹配的字串,則使用對現有物件的參考而不是建立新物件。
不變性和字串常數池
不變性發揮作用對於字串常數池的有效運作起著至關重要的作用。由於多個參考可以指向同一個 String 對象,因此允許一個引用修改該物件可能會造成不一致。因此,String 的不變性確保所有引用都指向相同的值,從而保持一致性。
String 類別的終結性
防止 String 方法的行為被覆寫後,String 類別被標記為「final」。這可以防止子類別更改 String 物件的預設行為,從而保留其不可變的性質。
以上是Java 字串是不可變的:這到底代表什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!