鸿蒙OS StringBuffer
StringBuffer
java.lang.Object
|---java.lang.StringBuffer
public final class StringBuffer
extends Object
implements Appendable, CharSequence, Serializable
一个线程安全的、可变的字符序列。字符串缓冲区类似于字符串,但可以修改。在任何时候它都包含一些特定的字符序列,但是序列的长度和内容可以通过某些方法调用来改变。
字符串缓冲区可以安全地被多个线程使用。这些方法在必要时同步,以便任何特定实例上的所有操作都表现得好像它们以某种串行顺序发生,该顺序与所涉及的每个单独线程进行的方法调用的顺序一致。
StringBuffer 上的主要操作是 append 和 insert 方法,它们被重载以便接受任何类型的数据。每个都有效地将给定的数据转换为字符串,然后将该字符串的字符附加或插入到字符串缓冲区。 append 方法总是将这些字符添加到缓冲区的末尾; insert 方法在指定点添加字符。
例如,如果 z 引用当前内容为“start”的字符串缓冲区对象,则方法调用 z.append(“le”) 将导致字符串缓冲区包含“startle”,而 z.insert(4, " le") 将更改字符串缓冲区以包含“starlet”。
一般来说,如果 sb 引用一个 StringBuffer 的实例,那么 sb.append(x) 与 sb.insert(sb.length(), x) 具有相同的效果。
每当发生涉及源序列的操作(例如从源序列追加或插入)时,此类仅在执行操作的字符串缓冲区上同步,而不在源上同步。请注意,虽然 StringBuffer 旨在安全地从多个线程同时使用,但如果向构造函数或追加或插入操作传递了跨线程共享的源序列,则调用代码必须确保该操作具有一致且不变的视图操作期间的源序列。这可以通过在操作调用期间持有锁的调用者来满足,通过使用不可变的源序列,或者不跨线程共享源序列。
每个字符串缓冲区都有一个容量。只要字符串缓冲区包含的字符序列的长度不超过容量,就不需要分配新的内部缓冲区数组。如果内部缓冲区溢出,它会自动变大。
除非另有说明,否则将 null 参数传递给此类中的构造函数或方法将导致抛出 NullPointerException。
从 JDK 5 开始,该类已经补充了一个为单线程使用而设计的等效类 StringBuilder。通常应优先使用 StringBuilder 类,因为它支持所有相同的操作,但速度更快,因为它不执行同步。
构造函数总结
构造函数 | 描述 |
---|---|
StringBuffer() | 构造一个字符串缓冲区,其中没有字符,初始容量为 16 个字符。 |
StringBuffer(int capacity) | 构造一个没有字符且具有指定初始容量的字符串缓冲区。 |
StringBuffer(CharSequence seq) | 构造一个字符串缓冲区,该缓冲区包含与指定 CharSequence 相同的字符。 |
StringBuffer(String str) | 构造一个字符串缓冲区,初始化为指定字符串的内容。 |
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
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()
构造一个字符串缓冲区,其中没有字符,初始容量为 16 个字符。
StringBuffer
public StringBuffer(int capacity)
构造一个没有字符且具有指定初始容量的字符串缓冲区。
参数:
参数名称 | 参数描述 |
---|---|
capacity | 初始容量。 |
Throws:
Throw名称 | Throw描述 |
---|---|
NegativeArraySizeException | 如果容量参数小于 0。 |
StringBuffer
public StringBuffer(String str)
构造一个字符串缓冲区,初始化为指定字符串的内容。 字符串缓冲区的初始容量是 16 加上字符串参数的长度。
参数:
参数名称 | 参数描述 |
---|---|
str | 缓冲区的初始内容。 |
StringBuffer
public StringBuffer(CharSequence seq)
构造一个字符串缓冲区,该缓冲区包含与指定 CharSequence 相同的字符。 字符串缓冲区的初始容量是 16 加上 CharSequence 参数的长度。
如果指定的 CharSequence 的长度小于或等于 0,则返回容量为 16 的空缓冲区。
参数:
参数名称 | 参数描述 |
---|---|
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 为旧字符序列的长度,即在执行 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
返回:
对象的字符串表示形式。