java StringBuffer宣告的字串什麼時候放到常量池?

時間 2021-06-09 18:13:43

1樓:IT夜貓

StringBuffer的toString方法會呼叫new String, 在堆中新建物件。

public

synchronized

String

toString

()Strings2=

newStringBuffer

("word"

).toString

();System

.out

.println(s2

==s2

.intern

());

//結果是false

1、word已經在字串常量池中。

2、經過StringBuffer的toString以後,s2指向堆中新建立的物件。

3、s2.intern()拿到的是常量池中之前就存在的物件引用。

所以s2和s2.intern持有的不是同乙個物件引用。

Strings1=

newStringBuffer

("he").(

"llo"

).toString

();System

.out

.println(s1

==s1

.intern

());

//結果是true

1、hello不在字串常量池中。

2、經過StringBuffer的toString以後,s1指向堆中新建立的物件,同時這個物件也被儲存到常量池中。

3、s1.intern()去常量池中拿到的物件引用也正是剛剛新建的物件。

所以s1和s1.intern持有的是同乙個物件引用。

C 在宣告const常量字串時,更常用string類還是更常用char 呢?

將子山 當然是std string view。當然你如果說的是constexpr std string,那不好意思還不支援。 Ninsun 常量的話 用char 本身是沒啥毛病的 你甚至搞成巨集定義都不一定會有問題。但是如果你的所有介面接受的字串都是string型別的 大概率 那還是用string吧...

如何通過只翻轉乙個字串的子串對該字串進行排序?

老版題是NP很多人已經給出參考文獻了。新版題是裸dp 設len是字串strls的長度,那麼定義dp len 1 2 表示直到長度x 0 x len 最後一位strls x 1 不翻轉 翻轉 0 1 所需的最小翻轉次數。 yaoyao 反轉兩個字元的子串不就是交換兩個字元的位置嗎?這是氣泡排序呀 喵的...

C語言中用指標宣告字串在部分系統下執行有問題?

執行報錯很正常,在windows下如果你用vc編譯的話也會執行報錯,因為這是已初始化的資料,被放在所謂的靜態儲存區,預設在PE檔案的.rdata區段,這個區段是可讀取不可寫入的,寫入肯定會非法訪問。可以根據 余天公升的方法將字串放在棧裡,但是如果你一定要這麼做的話,那就在加上 pragma comm...