Java 中「new String(...)」的使用
當遇到程式碼結構「new String(...) 」時)」在Java 中,理解它的目的和效果很重要。 World”;”)不同,此語法利用“new”運算符透過使用字串常數初始化來建立String 物件。 🎜>
雖然字串常數駐留在常量池中,但「new String(...)」的行為並不那麼簡單正如人們可能想像的那樣。對象,但它不一定會導致在堆上分配新記憶體。 )”強制內部字元數組的不同副本。然而,這種行為依賴於實現並且沒有記錄。例如,嘗試通過“small=new String(huge.substring(10,20))」來實現此目的可能會導致意外結果,因為可能會保留整個原始字元數組,從而消耗大量記憶體。不同副本的解決方案
為了確保字元陣列的真正不同副本,需要使用「new String(huge.substring(10,20).toCharArray())。 「雖然這需要兩次記憶體複製(一次用於“toCharArray()”,一次用於String 建構子),但這是實現所需結果的與實作無關的方法。假設文件的陷阱
值得注意的是,文件有時可能缺乏清晰度或準確性。 String(...)」的文件建議它建立「字串」的副本,這意味著支援字元陣列的副本。然而,正如Apache Harmony 實作所見,情況並非總是如此。結論
理解「new String(...)」的細微差別Java對於避免潛在陷阱至關重要。 🎜>以上是何時以及為什麼應該在 Java 中使用 `new String(...)`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!