首頁 > Java > java教程 > 字串常數池:為什麼即使文字存在,「new」也會建立一個新的字串物件?

字串常數池:為什麼即使文字存在,「new」也會建立一個新的字串物件?

Susan Sarandon
發布: 2024-11-03 08:05:30
原創
903 人瀏覽過

String Constant Pool: Why Does

字串常數池:深入檢查

Java 中的字串常數池被池化以優化記憶體使用並增強效能。這表示當遇到字串文字時,編譯器會檢查字串常數池中是否存在具有相同值的現有字串物件。如果找到,引用將定向到現有對象,避免建立新對象。

但是,當使用「new」運算子建立新的 String 物件時,會出現混亂,因為這似乎與規則相矛盾實習的。為了澄清這一點,讓我們檢查以下語句:

  • 「當編譯器遇到字串文字時,它會檢查池以查看是否已存在相同的字串。」
  • 「中在「new」的情況下,對字串文字的引用仍然放入常量表中,但是當您使用「new」時,JVM 必須在運行時創建一個新的String 對象,而不是使用常數中的物件

這些語句表明,當String 文字被保留並儲存在池中時,使用「new」會強制JVM 建立一個新的String 物件。等效的String,「new」運算子會繞過它並在非池記憶體中分配一個新物件。如預期的那樣,“one”和“two”的值都是“test”,但是“==”比較傳回false,因為它們引用了不同的String 物件。 」建立一個新的字串對象,即使字串文字「test」已經存在於池中。

總而言之,字串常數池優化內部字串文字的記憶體使用情況。但是,使用「new”會繞過池並在非池內存中創建一個新的String 對象。

以上是字串常數池:為什麼即使文字存在,「new」也會建立一個新的字串物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板