树叶云鸿蒙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

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

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