1、三者的運行速度方面的不同:StringBuilder > StringBuffer > String;
2、速度慢的原因之一是:String是不可改變的對象,而StringBuilder和StringBuffer是可以改變的對象;
3、StringBuilder和StringBuffer線程方面的不同:StringBuilder線程不安全、速度快;StringBuffer線程安全的、速度慢;
對於三者的總結
1、如果想要操作少量的數據用:String
2、單線程操作字符串緩衝區下操作大量數據:StringBuilder;
3、多線程操作字符串緩衝區下操作大量數據:StringBuffer;
String是一種特殊的final類,至於StringBuilder和StringBuffer其實也是一種final類,都是不可以被繼承的類;
String.class StringBuffer.class StringBuilder.class
三個類其實都是對 char[] 數組的操作,String裏面的 char[] 數組是final類型的一旦被指定就不能修改,而且String沒有對 char[] 數組操作的方法,另外兩個類的 char[] 數組沒有定義final,雖然他們本身是final 類,但是他們定義的變量不能指向其他對象,但是他們本身 char[] 是可以改變的,並且他們提供了對 char[] 數組操作的方法。例如如果用String進行字符串拼接,那麼會創建很多對象,但是用StringBuilder和StringBuffer進行字符串拼接,使用append方法沒有創建過多的對象。