String,Stringbuffer,StringBuilder的區別?
阿新 • • 發佈:2022-03-13
Stringbuffer,StringBuilder的由來?
String str = "hello";
我們可以看到初始String值為”hello“,然後在這個字串後面加上新的字串”world“,這個過程是需要重新開闢記憶體空間的,這是對記憶體空間的極大浪費。隨後引入了StringBuffer和StringBuildr類來對此種變化字串進行處理。
區別:(1)字元修改上的區別
Stringbuilder和StringBuffer類似,均可代表可變的字元序列,方法一樣
String:不可變字元序列
StringBuffer:可變字元序列,效率低,執行緒安全
StringBuilder:可變字元序列,效率高,執行緒不安全
String使用陷阱:String s = ”a“
s=s+”b“ //實際上原來的”a“字串物件已經丟棄了,現在
又產生了一個字串s+”b“,會導致大量副本字串物件存留在記憶體中,降低效率。
(2)初始化的區別,String可以空賦值,後者不行。