天天看點

JAVA中String、StringBuilder和StringBuffer的差別

      初學Java,對于String、StringBuilder和StringBuffer的差別不是很了解,通過查閱相關資料,總結了以下一些知識點,如果有不對的地方,也希望大家能夠指正!

        首先說一下這三個類的差別,主要在運作速度和線程安全兩個方面:

1、運作速度:在這方面運作速度由快到慢依次為:StringBuilder>StringBuffer>String

     String運作速度最慢的原因:

     Stirng為字元串常量,而其它兩個類為字元串變量,即String對象一旦建立之後該對象是不可更改的,但後兩者的對象是變量,是可以更改的。

2、線程安全:StringBuilder是線程不安全的,而StringBuffer是線程安全的

     如果一個StringBuffer對象在字元串緩沖區被多個線程使用時,StringBuffer中很多方法可以帶有synchronize關鍵字,是以能夠保證線程是安全的,但StringBuilder的方法沒有該關鍵字,是以不能保證線程安全,有可能會出現一些錯誤的操作。是以如果要進行的操作是多線程的,那就要使用StringBuffer,在單線程的情況下,建議使用速度比較快的StringBuilder。

3.總結一下:

        String:适用于少量的字元串操作的情況

        StringBuilder:适用于單線程下字元緩沖區進行大量操作的情況

        StringBuffer:使用多線程下字元緩沖區進行大量操作的情況