初學Java,對于String、StringBuilder和StringBuffer的差別不是很了解,通過查閱相關資料,總結了以下一些知識點,如果有不對的地方,也希望大家能夠指正!
首先說一下這三個類的差別,主要在運作速度和線程安全兩個方面:
1、運作速度:在這方面運作速度由快到慢依次為:StringBuilder>StringBuffer>String
String運作速度最慢的原因:
Stirng為字元串常量,而其它兩個類為字元串變量,即String對象一旦建立之後該對象是不可更改的,但後兩者的對象是變量,是可以更改的。
2、線程安全:StringBuilder是線程不安全的,而StringBuffer是線程安全的
如果一個StringBuffer對象在字元串緩沖區被多個線程使用時,StringBuffer中很多方法可以帶有synchronize關鍵字,是以能夠保證線程是安全的,但StringBuilder的方法沒有該關鍵字,是以不能保證線程安全,有可能會出現一些錯誤的操作。是以如果要進行的操作是多線程的,那就要使用StringBuffer,在單線程的情況下,建議使用速度比較快的StringBuilder。
3.總結一下:
String:适用于少量的字元串操作的情況
StringBuilder:适用于單線程下字元緩沖區進行大量操作的情況
StringBuffer:使用多線程下字元緩沖區進行大量操作的情況