StringBuilder

StringBuilder

StringBuilder是一個可變的字元序列。此類提供一個與 StringBuffer 兼容的 API,但不保證同步。該類被設計用作 StringBuffer 的一個簡易替換,用在字元串緩衝區被單個線程使用的時候(這種情況很普遍)。

簡介


如果可能,建議優先採用該類,因為在大多數實現中,它比 StringBuffer 要快。在 StringBuilder 上的主要操作是 append 和 insert 方法。每個方法都能有效地將給定的數據轉換成字元串,然後將該字元串的字元添加或插入到字元串生成器中。append 方法始終將這些字元添加到生成器的末端;而 insert 方法則在指定的點添加字元。例如,如果 z 引用一個當前內容為“start”的字元串生成器對象,則該方法調用 z.append("le") 將使字元串生成器包含“startle”,而 z.insert(4, "le") 將更改字元串生成器,使之包含“starlet”。通常,如果 n引用 StringBuilder 的實例(StringBuilder n = new StringBuilder();),則 n.append(x) 和 n.insert(n.length(), x) 具有相同的效果。每個字元串生成器都有一定的容量。只要字元串生成器所包含的字元序列的長度沒有超出此容量,就無需分配新的內部緩衝區。如果內部緩衝區溢出,則此容量自動增大。將StringBuilder的實例用於多個線程是不安全的。如果需要這樣的同步,則建議使用StringBuffer。StringBuilder類可以用於在無需創建一個新的字元串對象情況下修改字元串。StringBuilder不是線程安全的,而StringBuffer是線程安全的。但StringBuilder在單線程中的性能比StringBuffer高。

來源


StringBuilder據我所知,是C sharp(C#)中先有的。
Java中,首先出現的是StringBuffer,而StringBuilder類來源於jdk1.5及以後的版本,jdk1.4(包括1.4)之前是不存在該類的。請注意不要在jdk1.4的環境里使用StringBuilder類,否則會出錯。