鴻蒙OS StringBuilder

2022-05-23 17:36 更新

StringBuilder

java.lang.Object

|---java.lang.StringBuilder

public final class StringBuilder
extends Object
implements Appendable, CharSequence, Serializable

可變的字符序列。此類提供與 StringBuffer 兼容的 API,但不保證同步。此類設(shè)計(jì)用于在單個(gè)線程正在使用字符串緩沖區(qū)的地方(通常情況下)用作 StringBuffer 的替代品。在可能的情況下,建議優(yōu)先使用此類而不是 StringBuffer,因?yàn)樗诖蠖鄶?shù)實(shí)現(xiàn)下會(huì)更快。

StringBuilder 的主要操作是 append 和 insert 方法,它們被重載以便接受任何類型的數(shù)據(jù)。每個(gè)都有效地將給定的數(shù)據(jù)轉(zhuǎn)換為字符串,然后將該字符串的字符附加或插入到字符串構(gòu)建器中。 append 方法總是將這些字符添加到構(gòu)建器的末尾; insert 方法在指定點(diǎn)添加字符。

例如,如果 z 引用當(dāng)前內(nèi)容為 "start" 的字符串構(gòu)建器對(duì)象,則調(diào)用 z.append("le") 的方法將導(dǎo)致字符串構(gòu)建器包含 "startle",而 z.insert(4, " le") 將更改字符串生成器以包含“starlet”。

一般來(lái)說(shuō),如果 sb 引用 StringBuilder 的實(shí)例,則 sb.append(x) 與 sb.insert(sb.length(), x) 具有相同的效果。

每個(gè)字符串生成器都有容量。只要字符串構(gòu)建器中包含的字符序列的長(zhǎng)度不超過(guò)容量,就不需要分配新的內(nèi)部緩沖區(qū)。如果內(nèi)部緩沖區(qū)溢出,它會(huì)自動(dòng)變大。

StringBuilder 的實(shí)例對(duì)于多線程使用是不安全的。如果需要這種同步,則建議使用 StringBuffer。

除非另有說(shuō)明,否則將 null 參數(shù)傳遞給此類中的構(gòu)造函數(shù)或方法將導(dǎo)致拋出 NullPointerException。

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
StringBuilder() 構(gòu)造一個(gè)其中沒有字符且初始容量為 16 個(gè)字符的字符串構(gòu)建器。
StringBuilder(int capacity) 構(gòu)造一個(gè)字符串構(gòu)建器,其中沒有字符,初始容量由容量參數(shù)指定。
StringBuilder(CharSequence seq) 構(gòu)造一個(gè)字符串構(gòu)建器,該構(gòu)建器包含與指定 CharSequence 相同的字符。
StringBuilder(String str) 構(gòu)造一個(gè)初始化為指定字符串內(nèi)容的字符串構(gòu)建器。

方法總結(jié)

修飾符和類型 方法 描述
StringBuilder append(boolean b)
StringBuilder append(char c) 將指定的字符附加到此 Appendable。
StringBuilder append(char[] str)
StringBuilder append(char[] str, int offset, int len)
StringBuilder append(double d)
StringBuilder append(float f)
StringBuilder append(int i)
StringBuilder append(long lng)
StringBuilder append(CharSequence s) 將指定的字符序列附加到此 Appendable。
StringBuilder append(CharSequence s, int start, int end) 將指定字符序列的子序列附加到此 Appendable。
StringBuilder append(Object obj)
StringBuilder append(String str)
StringBuilder append(StringBuffer sb) 將指定的 StringBuffer 附加到此序列。
StringBuilder appendCodePoint(int codePoint)
int capacity() 返回當(dāng)前容量。
char charAt(int index) 返回此序列中指定索引處的 char 值。
int codePointAt(int index) 返回指定索引處的字符(Unicode 代碼點(diǎn))。
int codePointBefore(int index) 返回指定索引之前的字符(Unicode 代碼點(diǎn))。
int codePointCount(int beginIndex, int endIndex) 返回此序列的指定文本范圍內(nèi)的 Unicode 代碼點(diǎn)數(shù)。
StringBuilder delete(int start, int end)
StringBuilder deleteCharAt(int index)
void ensureCapacity(int minimumCapacity) 確保容量至少等于指定的最小值。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 字符從該序列復(fù)制到目標(biāo)字符數(shù)組 dst。
int indexOf(String str)
int indexOf(String str, int fromIndex)
StringBuilder insert(int offset, boolean b)
StringBuilder insert(int offset, char c)
StringBuilder insert(int offset, char[] str)
StringBuilder insert(int index, char[] str, int offset, int len)
StringBuilder insert(int offset, double d)
StringBuilder insert(int offset, float f)
StringBuilder insert(int offset, int i)
StringBuilder insert(int offset, long l)
StringBuilder insert(int dstOffset, CharSequence s)
StringBuilder insert(int dstOffset, CharSequence s, int start, int end)
StringBuilder insert(int offset, Object obj)
StringBuilder insert(int offset, String str)
int lastIndexOf(String str)
int lastIndexOf(String str, int fromIndex)
int length() 返回長(zhǎng)度(字符數(shù))。
int offsetByCodePoints(int index, int codePointOffset) 返回此序列中從給定索引偏移 codePointOffset 代碼點(diǎn)的索引。
StringBuilder replace(int start, int end, String str)
StringBuilder reverse()
void setCharAt(int index, char ch) 指定索引處的字符設(shè)置為 ch。
void setLength(int newLength) 設(shè)置字符序列的長(zhǎng)度。
CharSequence subSequence(int start, int end) 返回一個(gè)新的字符序列,它是該序列的子序列。
String substring(int start) 返回一個(gè)新字符串,其中包含當(dāng)前包含在此字符序列中的字符子序列。
String substring(int start, int end) 返回一個(gè)新字符串,該字符串包含當(dāng)前包含在此序列中的字符子序列。
String toString() 返回對(duì)象的字符串表示形式。
void trimToSize() 嘗試減少用于字符序列的存儲(chǔ)空間。
從接口 java.lang.CharSequence 繼承的方法
chars, codePoints
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

構(gòu)造函數(shù)詳細(xì)信息

StringBuilder

public StringBuilder()

構(gòu)造一個(gè)其中沒有字符且初始容量為 16 個(gè)字符的字符串構(gòu)建器。

StringBuilder

public StringBuilder(int capacity)

構(gòu)造一個(gè)字符串構(gòu)建器,其中沒有字符,初始容量由容量參數(shù)指定。

參數(shù):

參數(shù)名稱 參數(shù)描述
capacity 初始容量。

Throws:

Throw名稱 Throw描述
NegativeArraySizeException 如果容量參數(shù)小于 0。

StringBuilder

public StringBuilder(String str)

構(gòu)造一個(gè)初始化為指定字符串內(nèi)容的字符串構(gòu)建器。 字符串生成器的初始容量是 16 加上字符串參數(shù)的長(zhǎng)度。

參數(shù):

參數(shù)名稱 參數(shù)描述
str 緩沖區(qū)的初始內(nèi)容。

StringBuilder

public StringBuilder(CharSequence seq)

構(gòu)造一個(gè)字符串構(gòu)建器,該構(gòu)建器包含與指定 CharSequence 相同的字符。 字符串生成器的初始容量是 16 加上 CharSequence 參數(shù)的長(zhǎng)度。

參數(shù):

參數(shù)名稱 參數(shù)描述
seq 要復(fù)制的序列。

方法詳情

append

public StringBuilder append(Object obj)

append

public StringBuilder append(String str)

append

public StringBuilder append(StringBuffer sb)

將指定的 StringBuffer 附加到此序列。

StringBuffer 參數(shù)的字符按順序附加到此序列,此序列的長(zhǎng)度增加參數(shù)的長(zhǎng)度。 如果 sb 為空,則將四個(gè)字符“null”附加到此序列中。

設(shè) n 為該字符序列在執(zhí)行 append 方法之前的長(zhǎng)度。 那么如果k小于n,則新字符序列中索引k處的字符等于舊字符序列中索引k處的字符; 否則,它等于參數(shù) sb 中索引 k-n 處的字符。

參數(shù):

參數(shù)名稱 參數(shù)描述
sb 要附加的 StringBuffer。

返回:

對(duì)該對(duì)象的引用。

append

public StringBuilder append(CharSequence s)

從接口復(fù)制的描述:可附加

將指定的字符序列附加到此 Appendable。

根據(jù)哪個(gè)類實(shí)現(xiàn)了字符序列 csq,可能不會(huì)附加整個(gè)序列。 例如,如果 csq 是一個(gè) CharBuffer,那么要追加的子序列由緩沖區(qū)的位置和限制定義。

指定者:

在接口 Appendable 中追加

參數(shù):

參數(shù)名稱 參數(shù)描述
s 要追加的字符序列。 如果 csq 為 null,則將四個(gè)字符“null”附加到此 Appendable。

返回:

對(duì)本附錄的引用

append

public StringBuilder append(CharSequence s, int start, int end)

從接口復(fù)制的描述:可附加

將指定字符序列的子序列附加到此 Appendable。

當(dāng) csq 不為空時(shí),以 out.append(csq, start, end) 形式調(diào)用此方法的行為與調(diào)用完全相同

     out.append(csq.subSequence(start, end)) 

指定者:

在接口 Appendable 中追加

參數(shù):

參數(shù)名稱 參數(shù)描述
s 從中追加子序列的字符序列。 如果 csq 為 null,則將附加字符,就好像 csq 包含四個(gè)字符“null”。
start 子序列中第一個(gè)字符的索引
end 子序列中最后一個(gè)字符之后的字符的索引

返回:

對(duì)本附錄的引用

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException 如果 start 或 end 為負(fù)數(shù),則 start 大于 end,或者 end 大于 csq.length()

append

public StringBuilder append(char[] str)

append

public StringBuilder append(char[] str, int offset, int len)

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException

append

public StringBuilder append(boolean b)

append

public StringBuilder append(char c)

從接口復(fù)制的描述:可附加

將指定的字符附加到此 Appendable。

指定者:

在接口 Appendable 中追加

參數(shù):

參數(shù)名稱 參數(shù)描述
c 要附加的字符

返回:

對(duì)本附錄的引用

append

public StringBuilder append(int i)

append

public StringBuilder append(long lng)

append

public StringBuilder append(float f)

append

public StringBuilder append(double d)

appendCodePoint

public StringBuilder appendCodePoint(int codePoint)

delete

public StringBuilder delete(int start, int end)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

deleteCharAt

public StringBuilder deleteCharAt(int index)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

replace

public StringBuilder replace(int start, int end, String str)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

insert

public StringBuilder insert(int index, char[] str, int offset, int len)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

insert

public StringBuilder insert(int offset, Object obj)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

insert

public StringBuilder insert(int offset, String str)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

insert

public StringBuilder insert(int offset, char[] str)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

insert

public StringBuilder insert(int dstOffset, CharSequence s)

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException

insert

public StringBuilder insert(int dstOffset, CharSequence s, int start, int end)

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException

insert

public StringBuilder insert(int offset, boolean b)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

insert

public StringBuilder insert(int offset, char c)

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException

insert

public StringBuilder insert(int offset, int i)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

insert

public StringBuilder insert(int offset, long l)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

insert

public StringBuilder insert(int offset, float f)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

insert

public StringBuilder insert(int offset, double d)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

indexOf

public int indexOf(String str)

indexOf

public int indexOf(String str, int fromIndex)

lastIndexOf

public int lastIndexOf(String str)

lastIndexOf

public int lastIndexOf(String str, int fromIndex)

reverse

public StringBuilder reverse()

toString

public String toString()

從類復(fù)制的描述:對(duì)象

返回對(duì)象的字符串表示形式。 通常,toString 方法返回一個(gè)“以文本方式表示”該對(duì)象的字符串。 結(jié)果應(yīng)該是一個(gè)簡(jiǎn)潔但信息豐富的表示,易于人們閱讀。 建議所有子類重寫此方法。

Object 類的 toString 方法返回一個(gè)字符串,該字符串由對(duì)象作為其實(shí)例的類的名稱、at 符號(hào)字符“@”和對(duì)象哈希碼的無(wú)符號(hào)十六進(jìn)制表示形式組成。 換句話說(shuō),此方法返回一個(gè)等于以下值的字符串:

 getClass().getName() + '@' + Integer.toHexString(hashCode()) 

指定者:

接口 CharSequence 中的 toString

覆蓋:

類 Object 中的 toString

返回:

對(duì)象的字符串表示形式。

trimToSize

public void trimToSize()

嘗試減少用于字符序列的存儲(chǔ)空間。 如果緩沖區(qū)大于保存其當(dāng)前字符序列所需的大小,則可以調(diào)整其大小以提高空間效率。 調(diào)用此方法可能(但不是必須)影響后續(xù)調(diào)用 capacity() 方法返回的值。

codePointAt

public int codePointAt(int index)

返回指定索引處的字符(Unicode 代碼點(diǎn))。 索引指的是 char 值(Unicode 代碼單元),范圍從 0 到 length() - 1。

如果給定索引處指定的 char 值在高代理范圍內(nèi),后續(xù)索引小于此序列的長(zhǎng)度,并且后續(xù)索引處的 char 值在低代理范圍內(nèi),則補(bǔ)充代碼點(diǎn) 返回對(duì)應(yīng)于這個(gè)代理對(duì)。 否則,返回給定索引處的 char 值。

參數(shù):

參數(shù)名稱 參數(shù)描述
index char 值的索引

返回:

索引處字符的代碼點(diǎn)值

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException 如果 index 參數(shù)為負(fù)數(shù)或不小于此序列的長(zhǎng)度。

getChars

public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

字符從該序列復(fù)制到目標(biāo)字符數(shù)組 dst。 要復(fù)制的第一個(gè)字符位于索引 srcBegin; 要復(fù)制的最后一個(gè)字符位于索引 srcEnd-1 處。 要復(fù)制的字符總數(shù)為 srcEnd-srcBegin。 字符被復(fù)制到 dst 的子數(shù)組中,從索引 dstBegin 開始,到索引結(jié)束:

 dstbegin + (srcEnd-srcBegin) - 1 

參數(shù):

參數(shù)名稱 參數(shù)描述
srcBegin 從這個(gè)偏移量開始復(fù)制。
srcEnd 在此偏移處停止復(fù)制。
dst 要將數(shù)據(jù)復(fù)制到的數(shù)組。
dstBegin 偏移到 dst。

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException 如果以下任何一項(xiàng)為真:srcBegin 為負(fù) dstBegin 為負(fù) srcBegin 參數(shù)大于 srcEnd 參數(shù)。srcEnd 大于 this.length().dstBegin+srcEnd-srcBegin 大于 dst.length

length

public int length()

返回長(zhǎng)度(字符數(shù))。

指定者:

接口 CharSequence 中的長(zhǎng)度

返回:

此對(duì)象當(dāng)前表示的字符序列的長(zhǎng)度

setCharAt

public void setCharAt(int index, char ch)

指定索引處的字符設(shè)置為 ch。 這個(gè)序列被改變以表示一個(gè)與舊字符序列相同的新字符序列,除了它在位置索引處包含字符 ch。

index 參數(shù)必須大于或等于 0,并且小于此序列的長(zhǎng)度。

參數(shù):

參數(shù)名稱 參數(shù)描述
index 要修改的字符的索引。
ch 新character。

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException 如果 index 為負(fù)數(shù)或大于或等于 length()。

subSequence

public CharSequence subSequence(int start, int end)

返回一個(gè)新的字符序列,它是該序列的子序列。

調(diào)用表單的這個(gè)方法

 sb.subSequence(begin, end)

行為方式與調(diào)用完全相同

 sb.substring(begin, end)

提供這個(gè)方法是為了這個(gè)類可以實(shí)現(xiàn) CharSequence 接口。

指定者:

接口 CharSequence 中的子序列

參數(shù):

參數(shù)名稱 參數(shù)描述
start 起始索引,包括在內(nèi)。
end 結(jié)束索引,獨(dú)占。

返回:

指定的子序列。

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException 如果 start 或 end 為負(fù)數(shù),如果 end 大于 length(),或者如果 start 大于 end

substring

public String substring(int start)

返回一個(gè)新字符串,其中包含當(dāng)前包含在此字符序列中的字符子序列。 子字符串從指定的索引開始并延伸到此序列的末尾。

參數(shù):

參數(shù)名稱 參數(shù)描述
start 起始索引,包括在內(nèi)。

返回:

新字符串。

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException 如果 start 小于零,或大于此對(duì)象的長(zhǎng)度。

substring

public String substring(int start, int end)

返回一個(gè)新字符串,該字符串包含當(dāng)前包含在此序列中的字符子序列。 子字符串從指定的 start 開始并延伸到索引 end - 1 處的字符。

參數(shù):

參數(shù)名稱 參數(shù)描述
start 起始索引,包括在內(nèi)。
end 結(jié)束索引,獨(dú)占。

返回:

新字符串。

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException 如果 start 或 end 為負(fù)數(shù)或大于 length(),或者 start 大于 end。

capacity

public int capacity()

返回當(dāng)前容量。 容量是可用于新插入字符的存儲(chǔ)量,超出該容量將發(fā)生分配。

返回:

當(dāng)前容量

setLength

public void setLength(int newLength)

設(shè)置字符序列的長(zhǎng)度。 該序列更改為長(zhǎng)度由參數(shù)指定的新字符序列。 對(duì)于每個(gè)小于newLength的非負(fù)索引k,如果k小于舊字符序列的長(zhǎng)度,則新字符序列中索引k處的字符與舊序列中索引k處的字符相同; 否則,它是空字符'\u0000'。 換言之,如果 newLength 參數(shù)小于當(dāng)前長(zhǎng)度,則將長(zhǎng)度更改為指定長(zhǎng)度。

如果 newLength 參數(shù)大于或等于當(dāng)前長(zhǎng)度,則附加足夠的空字符 ('\u0000'),以便長(zhǎng)度成為 newLength 參數(shù)。

newLength 參數(shù)必須大于或等于 0。

參數(shù):

參數(shù)名稱 參數(shù)描述
newLength 新長(zhǎng)度

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException 如果 newLength 參數(shù)為負(fù)數(shù)。

ensureCapacity

public void ensureCapacity(int minimumCapacity)

確保容量至少等于指定的最小值。 如果當(dāng)前容量小于參數(shù),則分配具有更大容量的新內(nèi)部數(shù)組。 新容量是以下兩者中的較大者:

  • minimumCapacity 參數(shù)。
  • 舊容量的兩倍,加上 2。

如果 minimumCapacity 參數(shù)為非正數(shù),則此方法不執(zhí)行任何操作并簡(jiǎn)單地返回。 請(qǐng)注意,對(duì)該對(duì)象的后續(xù)操作可能會(huì)將實(shí)際容量減少到此處請(qǐng)求的容量以下。

參數(shù):

參數(shù)名稱 參數(shù)描述
minimumCapacity 所需的最小容量。

codePointBefore

public int codePointBefore(int index)

返回指定索引之前的字符(Unicode 代碼點(diǎn))。 索引指的是 char 值(Unicode 代碼單元),范圍從 1 到 length()。

如果 (index - 1) 處的 char 值在低代理范圍內(nèi),(index - 2) 不為負(fù),并且 (index - 2) 處的 char 值在高代理范圍內(nèi),則補(bǔ)充代碼點(diǎn) 返回代理對(duì)的值。 如果索引 - 1 處的 char 值是未配對(duì)的低代理或高代理,則返回代理值。

參數(shù):

參數(shù)名稱 參數(shù)描述
index 應(yīng)返回的代碼點(diǎn)之后的索引

返回:

給定索引之前的 Unicode 代碼點(diǎn)值。

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException 如果 index 參數(shù)小于 1 或大于此序列的長(zhǎng)度。

charAt

public char charAt(int index)

返回此序列中指定索引處的 char 值。 第一個(gè) char 值在索引 0 處,下一個(gè)在索引 1 處,依此類推,就像在數(shù)組索引中一樣。

index 參數(shù)必須大于或等于 0,并且小于此序列的長(zhǎng)度。

如果索引指定的 char 值是代理項(xiàng),則返回代理項(xiàng)值。

指定者:

接口 CharSequence 中的 charAt

參數(shù):

參數(shù)名稱 參數(shù)描述
index 所需 char 值的索引。

返回:

指定索引處的 char 值。

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException 如果 index 為負(fù)數(shù)或大于或等于 length()。

codePointCount

public int codePointCount(int beginIndex, int endIndex)

返回此序列的指定文本范圍內(nèi)的 Unicode 代碼點(diǎn)數(shù)。 文本范圍從指定的 beginIndex 開始并擴(kuò)展到索引 endIndex - 1 處的字符。因此,文本范圍的長(zhǎng)度(以字符為單位)為 endIndex-beginIndex。 此序列中的未配對(duì)代理各自計(jì)為一個(gè)代碼點(diǎn)。

參數(shù):

參數(shù)名稱 參數(shù)描述
beginIndex 文本范圍的第一個(gè)字符的索引。
endIndex 文本范圍的最后一個(gè)字符之后的索引。

返回:

指定文本范圍內(nèi)的 Unicode 代碼點(diǎn)數(shù)

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException 如果 beginIndex 為負(fù)數(shù),或者 endIndex 大于此序列的長(zhǎng)度,或者 beginIndex 大于 endIndex。

offsetByCodePoints

public int offsetByCodePoints(int index, int codePointOffset)

返回此序列中從給定索引偏移 codePointOffset 代碼點(diǎn)的索引。 由 index 和 codePointOffset 給出的文本范圍內(nèi)的未配對(duì)代理分別計(jì)為一個(gè)代碼點(diǎn)。

參數(shù):

參數(shù)名稱 參數(shù)描述
index 要偏移的索引
codePointOffset 代碼點(diǎn)的偏移量

返回:

此序列中的索引

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException 如果 index 為負(fù)或大于此序列的長(zhǎng)度,或者如果 codePointOffset 為正并且以 index 開頭的子序列的代碼點(diǎn)少于 codePointOffset,或者如果 codePointOffset 為負(fù)并且 index 之前的子序列小于 codePointOffset 代碼的絕對(duì)值 點(diǎn)。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)