一、引言
String類雖然很強大,但是因爲String類不可變,所以會造成內存的過於浪費。爲了解決字符串的內存問題,誕生了StringBuffer類,也就是字符串緩衝區。它的出現極大提高了字符串的操作效率。
StringBuffer內部定義了一個沒有final的數組(實質上是StringBuffer繼承的父類AbstractStringBuilder中定義的:char[] value)。該數組的默認容量是16個字符。當數組擴容時,將原數組複製,再添加,形成新的數組,將舊數組拋棄。
二、StringBuffer的方法
》StringBuffer append(String str)
將形參引用的字符串追加到字符串後面,可以接受任何數據類型但是最後輸出的都是字符串類型。誰調用返回誰,可以無限制在後面調用(方法調用鏈,即如果方法的返回值類型還是個對象,那麼還可以接着點出方法)
結果:
》StringBuffer delete(int start, int end) 移除此序列的子字符串中的字符
java中,索引有開始結束的,都是含頭不含尾
如果想清空緩衝區,可以通過如下代碼做到:
結果:
》StringBufferinsert(int offset, ***) 將字符串插入此字符串任意位置(offset指定的下標位置),***可以爲任何類型
》StringBufferreplace(int start, int end, String str) 使用給定字符串替換
》StringBufferreverse() 將此字符序列反轉
》StringtoString() 以字符串形式返回序列
三、StringBuilder類
與StringBuffer兼容(兩個類的方法相同),該類被設計用作StringBuffer的一個簡易替換,用在字符串緩衝區被單個線程使用的時候。如果沒有多線程需求,建議使用StringBuilder,因爲StringBuilder較快。
四、StringBuilder 與 StringBuffer 的區別
StringBuilder線程不安全,執行效率高,StringBuffer相反。其他都一樣,方法完全相同。