在Java 中,像「abc」這樣的「字串文字」是內部儲存的,這意味著對同一文字值的多個引用指向同一個值記憶體中的實例。這有助於優化記憶體使用和效能。但是,將 new 與字串文字一起使用,例如 new String("abc"),會建立一個新的字串對象,即使該文字已存在於字串池中。
提出了關於字串池的兩個陳述一些混亂:
因此,有兩個獨立的值為「test」的 String 物件:一個在常數池中(被兩個引用)以及用 new 建立的新的(由 1 引用)。這就是為什麼 one.equals(two) 為 true(它們具有相同的值),但 one == Two 為 false(它們引用不同的物件)。
語句1 應該改寫為「當編譯器遇到字串文字,它檢查池中是否已經存在相同的字串。」僅當字串被明確保留或在類別定義中用作文字時,字串才會被保留。
以上是Java字串池如何處理`new String('literal')`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!