首頁 >Java >Java基礎 >string,stringbuffer以及stringbuilder的區別

string,stringbuffer以及stringbuilder的區別

hzc
hzc原創
2020-06-19 17:24:552774瀏覽

string,stringbuffer以及stringbuilder的區別

string,stringbuffer以及stringbuilder的區別?

##小編在一次電話面試中,被問過StringBuilder是線程安全的嗎,脫口而出是安全的,結果人家質疑我你是2年開發經驗嗎。長時間得不使用這個類,造成了我選擇的性的忘記,也可以說是基礎不牢吧。我不知道大家有沒有過這樣的經歷,所以還是筆頭上記錄,更能增加我的記憶力。

String:大家都知道String是使用final修飾的,所以它的值是不可變的,這就導致每次對String的操作都會產生新的String對象,這樣不僅效率低下,而且大量浪費有限的記憶體空間,如圖:

string,stringbuffer以及stringbuilder的區別

我們可以看到,初始String值為“abc”,然後在這個字串後面加上新的字串“ bv”,這個過程是需要重新在棧堆內存中開闢內存空間的,最終得到了“abcbv”字符串也相應的需要開闢內存空間,這樣短短的兩個字符串,卻需要開闢三次內存空間,不得不說這是對記憶體空間的極大浪費。為了回應經常性的字串相關的操作,引入了兩個新的類別-StringBuffer類別和StringBuild類別來對此種變化字串進行處理。

string,stringbuffer以及stringbuilder的區別

StringBuilder類別:在 Java 5 中被提出,特點是可變字串。執行效率高,線程不安全。

StringBuffer類別:特點是可變字串,執行效率低,執行緒安全。

可以看得出時間上更快一些。

總結:

  • 如果要操作少量的資料用String;

  • 多執行緒操作字串緩衝區下操作大量資料StringBuffer;

  • 單執行緒操作字串緩衝區下操作大量資料StringBuilder。

推薦教學:《

java教學

以上是string,stringbuffer以及stringbuilder的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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