java語言中String,StringBuffer,StringBuilder的區別

我認爲String和StringBuffer的區別包括三點:

(1)String是不可變對象,什麼意思呢,就是說當我們創建一個String對象str1 = "abc",此時開闢了一個空間存放着abc,str1指向它,現在我給str1“重新賦值”str1=“def”,此時其實是重新開闢了一個空間存放def,str1指向新空間。而StringBuffer則是這樣,它會直接修改開始那個空間裏的值,所以,String是改變的地址,而StringBuffer則是修改值。

(2)在判等時,string 對象重寫了object對象的equals()方法,比較的是值而非地址,而StringBuffer沒有重寫這個方法,判別的是地址。

(3)在連接字符串時,通常選用stringbuffer,因爲效率更高一些,比如string a = new String("hello"); a += "world";其實在連接的時候,是將a轉化爲一個stringbuffer對象,然後利用stringbuffer的append方法,連接world,最後再轉化爲string對象。


StringBuffer和StringBuilder的區別在於,StringBuffer是線程安全的,而StringBuilder是不安全的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章