首頁 >Java >java教程 >Java 字串池:堆疊或堆疊-字串物件駐留在哪裡?

Java 字串池:堆疊或堆疊-字串物件駐留在哪裡?

DDD
DDD原創
2024-12-17 21:14:12905瀏覽

Java String Pool: Heap or Stack—Where Does a String Object Reside?

Java 字串池:堆疊分配與堆疊儲存

考慮程式碼片段:

String first = "abc"; 
String second = new String("abc");

實例化一個使用new 關鍵字的new String 物件在堆上建立一個不同的String 物件。與其他基元不同,String 物件是不可變的,這表示它們在初始化後無法修改。

但是,Java 在堆中維護了一個 String 池,該池儲存有限數量的常用 String。當定義文字字串(用雙引號括起來)時,編譯器會檢查字串池中是否存在現有的匹配字串。如果找到,文字 String 將引用池中現有的 String,保證記憶體效率。

在本例中,由於「abc」是文字 String,因此它將被放入字串池中。

現在,讓我們考慮使用new String("abc") 建立的新String 物件:

  • 一個新的String 物件是在堆疊上建立的,而不是在堆疊上創建的。
  • 儘管是文字「abc」的副本,但該物件不會儲存在字串池中。

因此,我們的程式碼結果為字串池中的一個字串(「abc」)和堆上的一個不同的字串 (用new建立的字串)字串(“abc”))。

以上是Java 字串池:堆疊或堆疊-字串物件駐留在哪裡?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn