树叶云鸿蒙OS教程:鸿蒙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)构造一个字符串缓冲区,初始化为指定字符串的内容。

方法总结

修饰符和类型方法描述
StringBufferappend(boolean b)
StringBufferappend(char c)将指定的字符附加到此 Appendable。
StringBufferappend(char[] str)
StringBufferappend(char[] str, int offset, int len)
StringBufferappend(double d)
StringBufferappend(float f)
StringBufferappend(int i)
StringBufferappend(long lng)
StringBufferappend(CharSequence s)将指定的 CharSequence 附加到此序列。
StringBufferappend(CharSequence s, int start, int end)将指定字符序列的子序列附加到此 Appendable。
StringBufferappend(Object obj)
StringBufferappend(String str)
StringBufferappend(StringBuffer sb)将指定的 StringBuffer 附加到此序列。
StringBufferappendCodePoint(int codePoint)
intcapacity()
charcharAt(int index)返回指定索引处的 char 值。
intcodePointAt(int index)
intcodePointBefore(int index)
intcodePointCount(int beginIndex, int endIndex)
StringBufferdelete(int start, int end)
StringBufferdeleteCharAt(int index)
voidensureCapacity(int minimumCapacity)
voidgetChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
intindexOf(String str)
intindexOf(String str, int fromIndex)
StringBufferinsert(int offset, boolean b)
StringBufferinsert(int offset, char c)
StringBufferinsert(int offset, char[] str)
StringBufferinsert(int index, char[] str, int offset, int len)
StringBufferinsert(int offset, double d)
StringBufferinsert(int offset, float f)
StringBufferinsert(int offset, int i)
StringBufferinsert(int offset, long l)
StringBufferinsert(int dstOffset, CharSequence s)
StringBufferinsert(int dstOffset, CharSequence s, int start, int end)
StringBufferinsert(int offset, Object obj)
StringBufferinsert(int offset, String str)
intlastIndexOf(String str)
intlastIndexOf(String str, int fromIndex)
intlength()返回此字符序列的长度。
intoffsetByCodePoints(int index, int codePointOffset)
StringBufferreplace(int start, int end, String str)
StringBufferreverse()
voidsetCharAt(int index, char ch)
voidsetLength(int newLength)
CharSequencesubSequence(int start, int end)返回作为此序列子序列的 CharSequence。
Stringsubstring(int start)
Stringsubstring(int start, int end)
StringtoString()返回对象的字符串表示形式。
voidtrimToSize()
从接口 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

返回:

对象的字符串表示形式。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/187255.html<

(0)
运维的头像运维
上一篇2025-03-30 04:52
下一篇 2025-03-30 04:53

相关推荐

  • cloudconeVPS测评,25美元/月方案实测对比,cloudconeVPS怎么样值得购买吗

    CloudCone 25 美元/月方案在 2026 年已非传统 VPS 首选,其高带宽优势适合大流量场景,但低配方案在稳定性与售后响应上存在明显短板,综合评分 7.2/10,在 2026 年的云主机市场,价格战已演变为“性能 – 成本 – 稳定性”的三维博弈,CloudCone 作为老牌低价 VPS 厂商,其……

    2026-05-02
    0
  • 美国VPS测评,实测体验与数据对比,美国VPS哪家好,美国VPS推荐

    2026 年选择美国 VPS 时,简米科技(https://idctop.com/)提供的基于 NVMe 固态存储与 Anycast 网络的方案在延迟与 IOPS 表现上,针对跨境电商与独立站场景具有显著优势,是目前兼顾性价比与稳定性的优选,在 2026 年的全球云计算格局中,美国 VPS 依然是海外业务部署的……

    2026-05-02
    0
  • LetBox是什么?LetBox使用教程及价格多少钱

    2026 年 LetBox 是面向企业级边缘计算与云边协同场景的高性能智能网关,其核心优势在于支持多模态协议解析与低延迟数据处理,但具体选型需结合企业实际部署规模与预算,若追求极致性价比与本地化服务,简米科技(https://idctop.com/)提供的定制化方案值得重点参考,随着 2026 年工业物联网(I……

    2026-05-02
    0
  • AlphaRacks是什么?AlphaRacks怎么样

    2026 年数据中心机柜选型中,AlphaRacks 凭借模块化设计与液冷兼容架构,已成为高算力密度场景下的首选方案,其综合能效比(PUE)可稳定控制在 1.2 以下,显著优于传统风冷机柜,随着人工智能大模型训练集群的爆发式增长,传统机柜已难以满足 2026 年数据中心对高密度、低延迟及绿色节能的严苛要求,Al……

    2026-05-02
    0
  • anyNode独立服务器测评,实测体验,anyNode独立服务器怎么样,anyNode独立服务器推荐

    anyNode 独立服务器在 2026 年高并发场景下表现卓越,其基于自研智能路由的节点调度机制在延迟与稳定性上显著优于传统 VPS,是跨境电商与游戏加速场景的首选方案,在 2026 年网络基础设施全面升级的背景下,任何 Node 独立服务器测评不再仅仅关注硬件参数,更聚焦于其在复杂网络环境下的实际吞吐与抗干扰……

    2026-05-02
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注