1. 程式人生 > 實用技巧 >JAVA入門教程12-StringBuffer 和 StringBuilder 類

JAVA入門教程12-StringBuffer 和 StringBuilder 類

Java StringBuffer 和 StringBuilder 類

當對字串進行修改的時候,需要使用 StringBuffer 和 StringBuilder 類。

和String類不同的是,StringBuffer 和 StringBuilder 類的物件能夠被多次的修改,並且不產生新的未使用物件

StringBuilder 類在 Java 5 中被提出,它和 StringBuffer 之間的最大不同在於 StringBuilder 的方法不是執行緒安全的(執行緒安全就是多執行緒訪問時,採用了加鎖機制,當一個執行緒訪問該類的某個資料時,進行保護,其他執行緒不能進行訪問直到該執行緒讀取完,其他執行緒才可使用。不會出現資料不一致或者資料汙染。執行緒不安全就是不提供資料訪問保護,有可能出現多個執行緒先後更改資料造成所得到的資料是髒資料)。

由於 StringBuilder 相較於 StringBuffer 有速度優勢,所以多數情況下建議使用 StringBuilder 類。然而在應用程式要求執行緒安全的情況下,則必須使用 StringBuffer 類。

例項

public class Test{

    public static void main(String args[]){
       StringBuffer sBuffer = new StringBuffer(" test");
       sBuffer.append(" String Buffer");
       System.out.println(sBuffer);  
   }
}

以上例項編譯執行結果如下:

test String Buffer

StringBuffer 方法

以下是 StringBuffer 類支援的主要方法:

序號方法描述
1 public StringBuffer append(String s)
將指定的字串追加到此字元序列。
2 public StringBuffer reverse()
將此字元序列用其反轉形式取代。
3 public delete(int start, int end)
移除此序列的子字串中的字元。
4 public insert(int offset, int i)
int引數的字串表示形式插入此序列中。
5 replace(int start, int end, String str)
使用給定String中的字元替換此序列的子字串中的字元。

下面的列表裡的方法和 String 類的方法類似:

序號 方法描述
1 int capacity()
返回當前容量
2 char charAt(int index)
返回此序列中指定索引處的char
3 void ensureCapacity(int minimumCapacity)
確保容量至少等於指定的最小值
4 void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
字元從此序列複製目標字元陣列dst
5 int indexOf(String str)
返回第一次出現的指定子字串在該字串中的索引
6 int indexOf(String str, int fromIndex)
指定的索引處開始,返回第一次出現的指定子字串在該字串中的索引。
7 int lastIndexOf(String str)
返回最右邊出現的指定子字串在此字串中的索引。
8 int lastIndexOf(String str, int fromIndex)
返回最後一次出現的指定子字串在此字串中的索引。
9 int length()
返回長度(字元數)。
10 void setCharAt(int index, char ch)
給定索引處的字元設定為ch
11 void setLength(int newLength)
設定字元序列的長度
12 CharSequence subSequence(int start, int end)
返回一個新的字元序列該字元序列是此序列的子序列
13 String substring(int start)
返回一個新的String,它包含此字元序列當前所包含的字元子序列
14 String substring(int start, int end)
返回一個新的String,它包含此序列當前所包含的字元子序列
15 String toString()
返回此序列中資料的字串表示形式