1. 程式人生 > >String,StringBuilder,StringBuffer聯絡與區別

String,StringBuilder,StringBuffer聯絡與區別

三者的區別,主要來自於兩個方面:
一個是執行緒安全,另一個是執行速度。
String是字串常量,而StringBuider和StringBuffer是字串變數。
String是執行速度最慢的,切由於String是最終類,所以是執行緒安全的。
Stirng為什麼執行速度最慢哪?這要從jvm說起了,因為String一旦被賦值就不能改變,而當值發生改變時,例如:string str = ‘aa’,str = str + ‘bb’;
此時,輸出str的值,確實是aabb,但是,卻不能說,str是變數,原因是,當對str進行拼接的時候,會在記憶體中從新建立一個字串常量,為它分配資源,原來的字串常量將被垃圾回收期回收,從而造成String拼接的效率低,而StringBuffer和StringBuilder是字串變數,所以,拼接的時候不用再建立物件,執行效率就提高了
再來說執行緒安全方面
由於StringBuffer的方法帶有synchronized關鍵字,是執行緒安全的,所以,StringBuffer支援多執行緒訪問,屬於執行緒安全,而當多個執行緒方位stringbuilder的時候,多個執行緒改變了其中的內容,屬於執行緒不安全的,
總結:
stringBuffer執行緒安全相對StringBuilder是效率低的,適合字串大量操作
StringBuilder是執行緒不安全的,效率搞得,適合字串大量操作
String:使用與少量字串的拼接,

下面是程式碼測試:
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述