From Gossip@caterpillar

Java Gossip: StringBuilder 類別

一個String物件的長度是固定的,您不能改變它的內容,或者是附加新的字元至String物件中。

J2SE 5.0 提供StringBuilder類別,使用這個類別所產生的物件預設會有16個字元的長度,您也可以自行指定初始長度,如果附加至物件的字元超出可容納的長度,則StringBuilder物件會自動增加長度。

在StringBuilder中,length()可傳回目前物件中的字元長度,而capacity()可傳回該物件目前可容納的字元容量,下面這個程式是個簡單的示範:

  • UseStringBuilder.java
public class UseStringBuilder { 
public static void main(String[] args) {
StringBuilder strBuilder =
new StringBuilder("Knowledge is power!");

System.out.println("內容: " + strBuilder);
System.out.println("長度: " + strBuilder.length());
System.out.println("容量: " + strBuilder.capacity());
}
}

執行結果:
內容: Knowledge is power!
長度: 19
容量: 35


StringBuilder擁有幾個操作字串的方法,例如insert()方法可以將字元插入指定的位置,如果該位置以後有字元,則將所有的字元往後移,deleteChar()方法可以刪除指定位置的字元,而reserve()方法可以反轉字串,詳細的使用可以查詢看看 java.lang.StringBuilder 的API說明。

您可能會問 java.lang.StringBuffer 呢?事實上,StringBuilder被設計為與StringBuffer相同的操作介面,但不考慮多執行緒下同步的問題,所以在單執行緒下,您可以將以前使用StringBuffer撰寫的程式,通通換為StringBuilder而仍可以運作,並可以獲得較好的效能;如果您的程式是在多執行緒下操作,則可以使用StringBuffer,讓這個類別自行管理同步問題。