本文目錄一覽:
java中,兩個String類型的字符串相加得到一個新的字符串,請問原來的字符串是否改變,為什麼?
java中 有String 和StringBUffer
String 長度不可變
StringBuffer長度可變
String相加 原來的不變
可變不可變的意思是說
你新建一個String型的 你第一次使用呢 他就給你分配那麼長的內存堆棧 不可變長度的
你要給他重新賦值了呢 他是重新開闢了一塊內存空間指針指向他
原來的內存空間 會被gc() 垃圾回收掉 這樣消耗系統內存
而stringBuffer呢 開闢出來了 長度可變了 你重新賦值了之後還是指向那塊內存 只不過長度變了
java string 相加有什麼不好
數量大的時候 性能比較差
如:
“a”+”b”
除了new “a”和”b”之外,還會new 一個新的內存空間存放”ab”
少量字符相加看不出什麼
當幾千甚至上萬的字符串相加性能就會比較差了
多字符串相加 用StringBuffer 它的原理是把各字符串連接起來 不會多new 內存空間
java中字符串相加本質到底是怎樣的
String s=”class”+”java”;
操作機制應該是緩衝內存取得內容”class”,”java”,然後存入一個新內存空間
跟原先字符串內存沒關係
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/237583.html