鴻蒙OS StringBuffer

2022-05-23 17:00 更新

StringBuffer

java.lang.Object

|---java.lang.StringBuffer

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

一個線程安全的、可變的字符序列。字符串緩沖區(qū)類似于字符串,但可以修改。在任何時候它都包含一些特定的字符序列,但是序列的長度和內容可以通過某些方法調用來改變。

字符串緩沖區(qū)可以安全地被多個線程使用。這些方法在必要時同步,以便任何特定實例上的所有操作都表現得好像它們以某種串行順序發(fā)生,該順序與所涉及的每個單獨線程進行的方法調用的順序一致。

StringBuffer 上的主要操作是 append 和 insert 方法,它們被重載以便接受任何類型的數據。每個都有效地將給定的數據轉換為字符串,然后將該字符串的字符附加或插入到字符串緩沖區(qū)。 append 方法總是將這些字符添加到緩沖區(qū)的末尾; insert 方法在指定點添加字符。

例如,如果 z 引用當前內容為“start”的字符串緩沖區(qū)對象,則方法調用 z.append(“l(fā)e”) 將導致字符串緩沖區(qū)包含“startle”,而 z.insert(4, " le") 將更改字符串緩沖區(qū)以包含“starlet”。

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

每當發(fā)生涉及源序列的操作(例如從源序列追加或插入)時,此類僅在執(zhí)行操作的字符串緩沖區(qū)上同步,而不在源上同步。請注意,雖然 StringBuffer 旨在安全地從多個線程同時使用,但如果向構造函數或追加或插入操作傳遞了跨線程共享的源序列,則調用代碼必須確保該操作具有一致且不變的視圖操作期間的源序列。這可以通過在操作調用期間持有鎖的調用者來滿足,通過使用不可變的源序列,或者不跨線程共享源序列。

每個字符串緩沖區(qū)都有一個容量。只要字符串緩沖區(qū)包含的字符序列的長度不超過容量,就不需要分配新的內部緩沖區(qū)數組。如果內部緩沖區(qū)溢出,它會自動變大。

除非另有說明,否則將 null 參數傳遞給此類中的構造函數或方法將導致拋出 NullPointerException。

從 JDK 5 開始,該類已經補充了一個為單線程使用而設計的等效類 StringBuilder。通常應優(yōu)先使用 StringBuilder 類,因為它支持所有相同的操作,但速度更快,因為它不執(zhí)行同步。

構造函數總結

構造函數 描述
StringBuffer() 構造一個字符串緩沖區(qū),其中沒有字符,初始容量為 16 個字符。
StringBuffer(int capacity) 構造一個沒有字符且具有指定初始容量的字符串緩沖區(qū)。
StringBuffer(CharSequence seq) 構造一個字符串緩沖區(qū),該緩沖區(qū)包含與指定 CharSequence 相同的字符。
StringBuffer(String str) 構造一個字符串緩沖區(qū),初始化為指定字符串的內容。

方法總結

修飾符和類型 方法 描述
StringBuffer append(boolean b)
StringBuffer append(char c) 將指定的字符附加到此 Appendable。
StringBuffer append(char[] str)
StringBuffer append(char[] str, int offset, int len)
StringBuffer append(double d)
StringBuffer append(float f)
StringBuffer append(int i)
StringBuffer append(long lng)
StringBuffer append(CharSequence s) 將指定的 CharSequence 附加到此序列。
StringBuffer append(CharSequence s, int start, int end) 將指定字符序列的子序列附加到此 Appendable。
StringBuffer append(Object obj)
StringBuffer append(String str)
StringBuffer append(StringBuffer sb) 將指定的 StringBuffer 附加到此序列。
StringBuffer appendCodePoint(int codePoint)
int capacity()
char charAt(int index) 返回指定索引處的 char 值。
int codePointAt(int index)
int codePointBefore(int index)
int codePointCount(int beginIndex, int endIndex)
StringBuffer delete(int start, int end)
StringBuffer deleteCharAt(int index)
void ensureCapacity(int minimumCapacity)
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
int indexOf(String str)
int indexOf(String str, int fromIndex)
StringBuffer insert(int offset, boolean b)
StringBuffer insert(int offset, char c)
StringBuffer insert(int offset, char[] str)
StringBuffer insert(int index, char[] str, int offset, int len)
StringBuffer insert(int offset, double d)
StringBuffer insert(int offset, float f)
StringBuffer insert(int offset, int i)
StringBuffer insert(int offset, long l)
StringBuffer insert(int dstOffset, CharSequence s)
StringBuffer insert(int dstOffset, CharSequence s, int start, int end)
StringBuffer insert(int offset, Object obj)
StringBuffer insert(int offset, String str)
int lastIndexOf(String str)
int lastIndexOf(String str, int fromIndex)
int length() 返回此字符序列的長度。
int offsetByCodePoints(int index, int codePointOffset)
StringBuffer replace(int start, int end, String str)
StringBuffer reverse()
void setCharAt(int index, char ch)
void setLength(int newLength)
CharSequence subSequence(int start, int end) 返回作為此序列子序列的 CharSequence。
String substring(int start)
String substring(int start, int end)
String toString() 返回對象的字符串表示形式。
void trimToSize()
從接口 java.lang.CharSequence 繼承的方法
chars, codePoints
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

構造函數詳細信息

StringBuffer

public StringBuffer()

構造一個字符串緩沖區(qū),其中沒有字符,初始容量為 16 個字符。

StringBuffer

public StringBuffer(int capacity)

構造一個沒有字符且具有指定初始容量的字符串緩沖區(qū)。

參數:

參數名稱 參數描述
capacity 初始容量。

Throws:

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

StringBuffer

public StringBuffer(String str)

構造一個字符串緩沖區(qū),初始化為指定字符串的內容。 字符串緩沖區(qū)的初始容量是 16 加上字符串參數的長度。

參數:

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

StringBuffer

public StringBuffer(CharSequence seq)

構造一個字符串緩沖區(qū),該緩沖區(qū)包含與指定 CharSequence 相同的字符。 字符串緩沖區(qū)的初始容量是 16 加上 CharSequence 參數的長度。

如果指定的 CharSequence 的長度小于或等于 0,則返回容量為 16 的空緩沖區(qū)。

參數:

參數名稱 參數描述
seq 要復制的序列。

方法詳情

length

public int length()

從接口復制的描述:CharSequence

返回此字符序列的長度。 長度是序列中 16 位字符的數量。

指定者:

接口 CharSequence 中的長度

返回:

此序列中的字符數

capacity

public int capacity()

ensureCapacity

public void ensureCapacity(int minimumCapacity)

trimToSize

public void trimToSize()

setLength

public void setLength(int newLength)

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException

charAt

public char charAt(int index)

從接口復制的描述:CharSequence

返回指定索引處的 char 值。 索引范圍從零到 length() - 1。序列的第一個 char 值在索引 0 處,下一個在索引 1 處,依此類推,與數組索引一樣。

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

指定者:

接口 CharSequence 中的 charAt

參數:

參數名稱 參數描述
index 要返回的 char 值的索引

返回:

指定的字符值

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException 如果 index 參數為負數或不小于 length()

codePointAt

public int codePointAt(int index)

codePointBefore

public int codePointBefore(int index)

codePointCount

public int codePointCount(int beginIndex, int endIndex)

offsetByCodePoints

public int offsetByCodePoints(int index, int codePointOffset)

getChars

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

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException

setCharAt

public void setCharAt(int index, char ch)

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException

append

public StringBuffer append(Object obj)

append

public StringBuffer append(String str)

append

public StringBuffer append(StringBuffer sb)

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

StringBuffer 參數的字符按順序附加到此 StringBuffer 的內容,使此 StringBuffer 的長度增加參數的長度。 如果 sb 為 null,則將四個字符“null”附加到此 StringBuffer。

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

此方法在目標對象 this 上同步,但在源 (sb) 上不同步。

參數:

參數名稱 參數描述
sb 要附加的 StringBuffer。

返回:

對該對象的引用。

append

public StringBuffer append(CharSequence s)

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

CharSequence 參數的字符按順序附加,該序列的長度增加了參數的長度。

此方法的結果與調用 this.append(s, 0, s.length()); 完全相同。

此方法在目標對象 this 上同步,但在源對象上不同步。

如果 s 為 null,則附加四個字符“null”。

指定者:

在接口 Appendable 中追加

參數:

參數名稱 參數描述
s 要附加的 CharSequence。

返回:

對該對象的引用。

append

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

從接口復制的描述:可附加

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

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

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

指定者:

在接口 Appendable 中追加

參數:

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

返回:

對本附錄的引用

Throws:

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

append

public StringBuffer append(char[] str)

append

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

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException

append

public StringBuffer append(boolean b)

append

public StringBuffer append(char c)

從接口復制的描述:可附加

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

指定者:

在接口 Appendable 中追加

參數:

參數名稱 參數描述
c 要附加的字符

返回:

對本附錄的引用

append

public StringBuffer append(int i)

appendCodePoint

public StringBuffer appendCodePoint(int codePoint)

append

public StringBuffer append(long lng)

append

public StringBuffer append(float f)

append

public StringBuffer append(double d)

delete

public StringBuffer delete(int start, int end)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

deleteCharAt

public StringBuffer deleteCharAt(int index)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

replace

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

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

substring

public String substring(int start)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

subSequence

public CharSequence subSequence(int start, int end)

從接口復制的描述:CharSequence

返回作為此序列子序列的 CharSequence。 子序列以指定索引處的 char 值開始,以索引 end - 1 處的 char 值結束。返回序列的長度(以字符為單位)為 end - start,因此如果 start == end 則返回空序列 .

指定者:

接口 CharSequence 中的子序列

參數:

參數名稱 參數描述
start 起始索引,包括
end 結束索引,獨占

返回:

指定的子序列

Throws:

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

substring

public String substring(int start, int end)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

insert

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

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

insert

public StringBuffer insert(int offset, Object obj)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

insert

public StringBuffer insert(int offset, String str)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

insert

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

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

insert

public StringBuffer insert(int dstOffset, CharSequence s)

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException

insert

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

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException

insert

public StringBuffer insert(int offset, boolean b)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

insert

public StringBuffer insert(int offset, char c)

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException

insert

public StringBuffer insert(int offset, int i)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

insert

public StringBuffer insert(int offset, long l)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

insert

public StringBuffer insert(int offset, float f)

Throws:

Throw名稱 Throw描述
StringIndexOutOfBoundsException

insert

public StringBuffer 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 StringBuffer reverse()

toString

public String toString()

從類復制的描述:對象

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

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

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

指定者:

接口 CharSequence 中的 toString

覆蓋:

類 Object 中的 toString

返回:

對象的字符串表示形式。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號