String、StringBuffer、StringBuilder的區別

在開發中、String可以通過StringBuffer或者StringBuilder生成,而且StringBuffer和StringBuilder的API是相同的,那麼這三者到底有什麼不同呢?


String

該類型創建的是字符串常量的字符串。同時根據源碼可以知道,String修飾符爲public final,從此可以看出String是不可以改變的。那麼,它的作用主要是申請一塊內存空間存儲一串字符串。
如果該類型字符串有所改變的話,肯定也會生成新的字符串對象,也就是說會重新申請一個內存空間存儲生成的新的字符串,舊的字符串存儲地址會被回收。
因此,從上面可以看出來,用String類型對字符串操作效率是非常的低。
不過個人認爲,字符串量少的情況下,對於現在的CPU效率可以說忽略不計,但是大量字符串操作,效率是相當低。


StringBuffer

該類型創建的是字符串變量的字符串,是可變的,因此字符串操作效率自然比String類型高。而且StringBuffer的大部方法都是synchronized修飾的,說明StringBuffer是線程安全的。


StringBuilder

該類型創建的也是字符串變量的字符串,是可變的,因此字符串操作效率自然也比String類型高。但是StringBuilder的方法沒有同步鎖(synchronized)修飾,因此StringBuilder是非線程安全的。

注:StringBufferStringBuilder都集成了AbstractStringBuilder


總結

String:常量,字符串操作效率低,適合操作少量數據。
StringBuffer:變量,字符串操作效率較高,而且多線程安全,適合操作大量數據。
StringBuilder:變量,字符串操作效率高,但線程非安全、適合單線程操作大量數據


座右銘:努力不一定成功,但放棄一定失敗!

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