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...