String、StringBuilder、StringBuffer簡單區別
阿新 • • 發佈:2021-10-26
String、StringBuffer和StringBuilder
同:
- 都用來封裝字串;
- 實現CharSequence介面
不同
-
string被final修飾,是不可變類,一旦賦值,不可改變;
- StringBuffer和StringBuilder都繼承自AbstractStringBuilder類,使用字元陣列儲存字串,是可變類;
-
建立物件初始化時,String可通過
- String a = new String("abc");
- String a = "abc";兩種方法進行初始化
- 而StringBuilder和StringBuffer只能通過new的方法來初始化
-
String字串修改的方式是先建立一個StringBuffer,其次呼叫StringBuffer的append()方法,最後呼叫StringBuffer的toString()方法返回結果;
String a = "abc"; a = a + "d"; System.out.println(a); // a = "abcd";
等同於
StringBuffer xy = new StringBuffer("abc"); xy.append("d"); xy.toString(); System.out.println(xy); // xy = "abcd";
String字串修改的過程要StringBuffer多幾部操作,增加一些臨時物件,從而導致程式碼的效率降低。
StringBuffer和StringBuilder在修改字串方面要比String的效率高
-
String類實現了equals()方法和hashCode()方法
StringBuffer類沒有實現equals()方法和hashCode()方法
-
StringBuffer和StringBuiloder都提供了一系列插入、追加、修改字串字元序列等方法,用法基本相同,
只是StringBuilder是執行緒不安全的,StringBuffer是執行緒安全的
如果單執行緒使用字串,則StringBuilder的效率高一些,但是當執行緒訪問時,最好使用StringBuffer
在執行效率上,StringBuilder最高,StringBuffer次之,String最低。
如果要運算元量比較小,應優先使用String類;
如果是單執行緒操作大量資料,應優先使用StringBuilder;
如果是在多執行緒操作大量資料,應優先使StringBuffer類