- extends Object
- implements Serializable, CharSequence
public final class StringBuilder
一個(gè)可變的字符序列。此類提供一個(gè)與 StringBuffer
兼容的 API,但不保證同步。該類被設(shè)計(jì)用作 StringBuffer
的一個(gè)簡易替換,用在字符串緩沖區(qū)被單個(gè)線程使用的時(shí)候(這種情況很普遍)。如果可能,建議優(yōu)先采用該類,因?yàn)樵诖蠖鄶?shù)實(shí)現(xiàn)中,它比 StringBuffer
要快。
在 StringBuilder
上的主要操作是 append
和 insert
方法,可重載這些方法,以接受任意類型的數(shù)據(jù)。每個(gè)方法都能有效地將給定的數(shù)據(jù)轉(zhuǎn)換成字符串,然后將該字符串的字符追加或插入到字符串生成器中。append
方法始終將這些字符添加到生成器的末端;而 insert
方法則在指定的點(diǎn)添加字符。
例如,如果 z
引用一個(gè)當(dāng)前內(nèi)容為 "start
" 的字符串的生成器對象,則該方法調(diào)用 z.append("le")
將使字符串生成器包含 "startle
",而 z.insert(4, "le")
將更改字符串生成器,使之包含 "starlet
"。
通常,如果 sb 引用 StringBuilder
的實(shí)例,則 sb.append(x)
和 sb.insert(sb.length(),?x)
具有相同的效果。每個(gè)字符串生成器都有一定的容量。只要字符串生成器所包含的字符序列的長度沒有超出此容量,就無需分配新的內(nèi)部緩沖區(qū)。如果內(nèi)部緩沖區(qū)溢出,則此容量自動增大。
將 StringBuilder
的實(shí)例用于多個(gè)線程是不安全的。如果需要這樣的同步,則建議使用 StringBuffer
。