鴻蒙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è)計用于在單個線程正在使用字符串緩沖區(qū)的地方(通常情況下)用作 StringBuffer 的替代品。在可能的情況下,建議優(yōu)先使用此類而不是 StringBuffer,因為它在大多數(shù)實現(xiàn)下會更快。

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

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

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

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

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

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

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

構(gòu)造函數(shù) 描述
StringBuilder() 構(gòu)造一個其中沒有字符且初始容量為 16 個字符的字符串構(gòu)建器。
StringBuilder(int capacity) 構(gòu)造一個字符串構(gòu)建器,其中沒有字符,初始容量由容量參數(shù)指定。
StringBuilder(CharSequence seq) 構(gòu)造一個字符串構(gòu)建器,該構(gòu)建器包含與指定 CharSequence 相同的字符。
StringBuilder(String str) 構(gòu)造一個初始化為指定字符串內(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 代碼點)。
int codePointBefore(int index) 返回指定索引之前的字符(Unicode 代碼點)。
int codePointCount(int beginIndex, int endIndex) 返回此序列的指定文本范圍內(nèi)的 Unicode 代碼點數(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() 返回長度(字符數(shù))。
int offsetByCodePoints(int index, int codePointOffset) 返回此序列中從給定索引偏移 codePointOffset 代碼點的索引。
StringBuilder replace(int start, int end, String str)
StringBuilder reverse()
void setCharAt(int index, char ch) 指定索引處的字符設(shè)置為 ch。
void setLength(int newLength) 設(shè)置字符序列的長度。
CharSequence subSequence(int start, int end) 返回一個新的字符序列,它是該序列的子序列。
String substring(int start) 返回一個新字符串,其中包含當(dāng)前包含在此字符序列中的字符子序列。
String substring(int start, int end) 返回一個新字符串,該字符串包含當(dāng)前包含在此序列中的字符子序列。
String toString() 返回對象的字符串表示形式。
void trimToSize() 嘗試減少用于字符序列的存儲空間。
從接口 java.lang.CharSequence 繼承的方法
chars, codePoints
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

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

StringBuilder

public StringBuilder()

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

StringBuilder

public StringBuilder(int capacity)

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

參數(shù):

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

Throws:

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

StringBuilder

public StringBuilder(String str)

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

參數(shù):

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

StringBuilder

public StringBuilder(CharSequence seq)

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

參數(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ù)的字符按順序附加到此序列,此序列的長度增加參數(shù)的長度。 如果 sb 為空,則將四個字符“null”附加到此序列中。

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

參數(shù):

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

返回:

對該對象的引用。

append

public StringBuilder append(CharSequence s)

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

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

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

指定者:

在接口 Appendable 中追加

參數(shù):

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

返回:

對本附錄的引用

append

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

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

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

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

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

指定者:

在接口 Appendable 中追加

參數(shù):

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

返回:

對本附錄的引用

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException 如果 start 或 end 為負數(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 要附加的字符

返回:

對本附錄的引用

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ù)制的描述:對象

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

Object 類的 toString 方法返回一個字符串,該字符串由對象作為其實例的類的名稱、at 符號字符“@”和對象哈希碼的無符號十六進制表示形式組成。 換句話說,此方法返回一個等于以下值的字符串:

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

指定者:

接口 CharSequence 中的 toString

覆蓋:

類 Object 中的 toString

返回:

對象的字符串表示形式。

trimToSize

public void trimToSize()

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

codePointAt

public int codePointAt(int index)

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

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

參數(shù):

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

返回:

索引處字符的代碼點值

Throws:

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

getChars

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

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

 dstbegin + (srcEnd-srcBegin) - 1 

參數(shù):

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

Throws:

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

length

public int length()

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

指定者:

接口 CharSequence 中的長度

返回:

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

setCharAt

public void setCharAt(int index, char ch)

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

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

參數(shù):

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

Throws:

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

subSequence

public CharSequence subSequence(int start, int end)

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

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

 sb.subSequence(begin, end)

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

 sb.substring(begin, end)

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

指定者:

接口 CharSequence 中的子序列

參數(shù):

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

返回:

指定的子序列。

Throws:

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

substring

public String substring(int start)

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

參數(shù):

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

返回:

新字符串。

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException 如果 start 小于零,或大于此對象的長度。

substring

public String substring(int start, int end)

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

參數(shù):

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

返回:

新字符串。

Throws:

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

capacity

public int capacity()

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

返回:

當(dāng)前容量

setLength

public void setLength(int newLength)

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

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

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

參數(shù):

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

Throws:

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

ensureCapacity

public void ensureCapacity(int minimumCapacity)

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

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

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

參數(shù):

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

codePointBefore

public int codePointBefore(int index)

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

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

參數(shù):

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

返回:

給定索引之前的 Unicode 代碼點值。

Throws:

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

charAt

public char charAt(int index)

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

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

如果索引指定的 char 值是代理項,則返回代理項值。

指定者:

接口 CharSequence 中的 charAt

參數(shù):

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

返回:

指定索引處的 char 值。

Throws:

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

codePointCount

public int codePointCount(int beginIndex, int endIndex)

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

參數(shù):

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

返回:

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

Throws:

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

offsetByCodePoints

public int offsetByCodePoints(int index, int codePointOffset)

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

參數(shù):

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

返回:

此序列中的索引

Throws:

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號