树叶云鸿蒙OS教程:鸿蒙OS StringBuilder

StringBuilder

java.lang.Object

|—java.lang.StringBuilder

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

可变的字符序列。此类提供与 StringBuffer 兼容的 API,但不保证同步。此类设计用于在单个线程正在使用字符串缓冲区的地方(通常情况下)用作 StringBuffer 的替代品。在可能的情况下,建议优先使用此类而不是 StringBuffer,因为它在大多数实现下会更快。

StringBuilder 的主要操作是 append 和 insert 方法,它们被重载以便接受任何类型的数据。每个都有效地将给定的数据转换为字符串,然后将该字符串的字符附加或插入到字符串构建器中。 append 方法总是将这些字符添加到构建器的末尾; insert 方法在指定点添加字符。

例如,如果 z 引用当前内容为 “start” 的字符串构建器对象,则调用 z.append(“le”) 的方法将导致字符串构建器包含 “startle”,而 z.insert(4, ” le”) 将更改字符串生成器以包含“starlet”。

一般来说,如果 sb 引用 StringBuilder 的实例,则 sb.append(x) 与 sb.insert(sb.length(), x) 具有相同的效果。

每个字符串生成器都有容量。只要字符串构建器中包含的字符序列的长度不超过容量,就不需要分配新的内部缓冲区。如果内部缓冲区溢出,它会自动变大。

StringBuilder 的实例对于多线程使用是不安全的。如果需要这种同步,则建议使用 StringBuffer。

除非另有说明,否则将 null 参数传递给此类中的构造函数或方法将导致抛出 NullPointerException。

构造函数摘要

构造函数描述
StringBuilder()构造一个其中没有字符且初始容量为 16 个字符的字符串构建器。
StringBuilder(int capacity)构造一个字符串构建器,其中没有字符,初始容量由容量参数指定。
StringBuilder(CharSequence seq)构造一个字符串构建器,该构建器包含与指定 CharSequence 相同的字符。
StringBuilder(String str)构造一个初始化为指定字符串内容的字符串构建器。

方法总结

修饰符和类型方法描述
StringBuilderappend(boolean b)
StringBuilderappend(char c)将指定的字符附加到此 Appendable。
StringBuilderappend(char[] str)
StringBuilderappend(char[] str, int offset, int len)
StringBuilderappend(double d)
StringBuilderappend(float f)
StringBuilderappend(int i)
StringBuilderappend(long lng)
StringBuilderappend(CharSequence s)将指定的字符序列附加到此 Appendable。
StringBuilderappend(CharSequence s, int start, int end)将指定字符序列的子序列附加到此 Appendable。
StringBuilderappend(Object obj)
StringBuilderappend(String str)
StringBuilderappend(StringBuffer sb)将指定的 StringBuffer 附加到此序列。
StringBuilderappendCodePoint(int codePoint)
intcapacity()返回当前容量。
charcharAt(int index)返回此序列中指定索引处的 char 值。
intcodePointAt(int index)返回指定索引处的字符(Unicode 代码点)。
intcodePointBefore(int index)返回指定索引之前的字符(Unicode 代码点)。
intcodePointCount(int beginIndex, int endIndex)返回此序列的指定文本范围内的 Unicode 代码点数。
StringBuilderdelete(int start, int end)
StringBuilderdeleteCharAt(int index)
voidensureCapacity(int minimumCapacity)确保容量至少等于指定的最小值。
voidgetChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)字符从该序列复制到目标字符数组 dst。
intindexOf(String str)
intindexOf(String str, int fromIndex)
StringBuilderinsert(int offset, boolean b)
StringBuilderinsert(int offset, char c)
StringBuilderinsert(int offset, char[] str)
StringBuilderinsert(int index, char[] str, int offset, int len)
StringBuilderinsert(int offset, double d)
StringBuilderinsert(int offset, float f)
StringBuilderinsert(int offset, int i)
StringBuilderinsert(int offset, long l)
StringBuilderinsert(int dstOffset, CharSequence s)
StringBuilderinsert(int dstOffset, CharSequence s, int start, int end)
StringBuilderinsert(int offset, Object obj)
StringBuilderinsert(int offset, String str)
intlastIndexOf(String str)
intlastIndexOf(String str, int fromIndex)
intlength()返回长度(字符数)。
intoffsetByCodePoints(int index, int codePointOffset)返回此序列中从给定索引偏移 codePointOffset 代码点的索引。
StringBuilderreplace(int start, int end, String str)
StringBuilderreverse()
voidsetCharAt(int index, char ch)指定索引处的字符设置为 ch。
voidsetLength(int newLength)设置字符序列的长度。
CharSequencesubSequence(int start, int end)返回一个新的字符序列,它是该序列的子序列。
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

构造函数详细信息

StringBuilder

public StringBuilder()

构造一个其中没有字符且初始容量为 16 个字符的字符串构建器。

StringBuilder

public StringBuilder(int capacity)

构造一个字符串构建器,其中没有字符,初始容量由容量参数指定。

参数:

参数名称参数描述
capacity初始容量。

Throws:

Throw名称Throw描述
NegativeArraySizeException如果容量参数小于 0。

StringBuilder

public StringBuilder(String str)

构造一个初始化为指定字符串内容的字符串构建器。 字符串生成器的初始容量是 16 加上字符串参数的长度。

参数:

参数名称参数描述
str缓冲区的初始内容。

StringBuilder

public StringBuilder(CharSequence seq)

构造一个字符串构建器,该构建器包含与指定 CharSequence 相同的字符。 字符串生成器的初始容量是 16 加上 CharSequence 参数的长度。

参数:

参数名称参数描述
seq要复制的序列。

方法详情

append

public StringBuilder append(Object obj)

append

public StringBuilder append(String str)

append

public StringBuilder append(StringBuffer sb)

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

StringBuffer 参数的字符按顺序附加到此序列,此序列的长度增加参数的长度。 如果 sb 为空,则将四个字符“null”附加到此序列中。

设 n 为该字符序列在执行 append 方法之前的长度。 那么如果k小于n,则新字符序列中索引k处的字符等于旧字符序列中索引k处的字符; 否则,它等于参数 sb 中索引 k-n 处的字符。

参数:

参数名称参数描述
sb要附加的 StringBuffer。

返回:

对该对象的引用。

append

public StringBuilder append(CharSequence s)

从接口复制的描述:可附加

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

根据哪个类实现了字符序列 csq,可能不会附加整个序列。 例如,如果 csq 是一个 CharBuffer,那么要追加的子序列由缓冲区的位置和限制定义。

指定者:

在接口 Appendable 中追加

参数:

参数名称参数描述
s要追加的字符序列。 如果 csq 为 null,则将四个字符“null”附加到此 Appendable。

返回:

对本附录的引用

append

public StringBuilder 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 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)

从接口复制的描述:可附加

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

指定者:

在接口 Appendable 中追加

参数:

参数名称参数描述
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()

从类复制的描述:对象

返回对象的字符串表示形式。 通常,toString 方法返回一个“以文本方式表示”该对象的字符串。 结果应该是一个简洁但信息丰富的表示,易于人们阅读。 建议所有子类重写此方法。

Object 类的 toString 方法返回一个字符串,该字符串由对象作为其实例的类的名称、at 符号字符“@”和对象哈希码的无符号十六进制表示形式组成。 换句话说,此方法返回一个等于以下值的字符串:

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

指定者:

接口 CharSequence 中的 toString

覆盖:

类 Object 中的 toString

返回:

对象的字符串表示形式。

trimToSize

public void trimToSize()

尝试减少用于字符序列的存储空间。 如果缓冲区大于保存其当前字符序列所需的大小,则可以调整其大小以提高空间效率。 调用此方法可能(但不是必须)影响后续调用 capacity() 方法返回的值。

codePointAt

public int codePointAt(int index)

返回指定索引处的字符(Unicode 代码点)。 索引指的是 char 值(Unicode 代码单元),范围从 0 到 length() – 1。

如果给定索引处指定的 char 值在高代理范围内,后续索引小于此序列的长度,并且后续索引处的 char 值在低代理范围内,则补充代码点 返回对应于这个代理对。 否则,返回给定索引处的 char 值。

参数:

参数名称参数描述
indexchar 值的索引

返回:

索引处字符的代码点值

Throws:

Throw名称Throw描述
IndexOutOfBoundsException如果 index 参数为负数或不小于此序列的长度。

getChars

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

字符从该序列复制到目标字符数组 dst。 要复制的第一个字符位于索引 srcBegin; 要复制的最后一个字符位于索引 srcEnd-1 处。 要复制的字符总数为 srcEnd-srcBegin。 字符被复制到 dst 的子数组中,从索引 dstBegin 开始,到索引结束:

 dstbegin + (srcEnd-srcBegin) - 1 

参数:

参数名称参数描述
srcBegin从这个偏移量开始复制。
srcEnd在此偏移处停止复制。
dst要将数据复制到的数组。
dstBegin偏移到 dst。

Throws:

Throw名称Throw描述
IndexOutOfBoundsException如果以下任何一项为真:srcBegin 为负 dstBegin 为负 srcBegin 参数大于 srcEnd 参数。srcEnd 大于 this.length().dstBegin+srcEnd-srcBegin 大于 dst.length

length

public int length()

返回长度(字符数)。

指定者:

接口 CharSequence 中的长度

返回:

此对象当前表示的字符序列的长度

setCharAt

public void setCharAt(int index, char ch)

指定索引处的字符设置为 ch。 这个序列被改变以表示一个与旧字符序列相同的新字符序列,除了它在位置索引处包含字符 ch。

index 参数必须大于或等于 0,并且小于此序列的长度。

参数:

参数名称参数描述
index要修改的字符的索引。
ch新character。

Throws:

Throw名称Throw描述
IndexOutOfBoundsException如果 index 为负数或大于或等于 length()。

subSequence

public CharSequence subSequence(int start, int end)

返回一个新的字符序列,它是该序列的子序列。

调用表单的这个方法

 sb.subSequence(begin, end)

行为方式与调用完全相同

 sb.substring(begin, end)

提供这个方法是为了这个类可以实现 CharSequence 接口。

指定者:

接口 CharSequence 中的子序列

参数:

参数名称参数描述
start起始索引,包括在内。
end结束索引,独占。

返回:

指定的子序列。

Throws:

Throw名称Throw描述
IndexOutOfBoundsException如果 start 或 end 为负数,如果 end 大于 length(),或者如果 start 大于 end

substring

public String substring(int start)

返回一个新字符串,其中包含当前包含在此字符序列中的字符子序列。 子字符串从指定的索引开始并延伸到此序列的末尾。

参数:

参数名称参数描述
start起始索引,包括在内。

返回:

新字符串。

Throws:

Throw名称Throw描述
StringIndexOutOfBoundsException如果 start 小于零,或大于此对象的长度。

substring

public String substring(int start, int end)

返回一个新字符串,该字符串包含当前包含在此序列中的字符子序列。 子字符串从指定的 start 开始并延伸到索引 end – 1 处的字符。

参数:

参数名称参数描述
start起始索引,包括在内。
end结束索引,独占。

返回:

新字符串。

Throws:

Throw名称Throw描述
StringIndexOutOfBoundsException如果 start 或 end 为负数或大于 length(),或者 start 大于 end。

capacity

public int capacity()

返回当前容量。 容量是可用于新插入字符的存储量,超出该容量将发生分配。

返回:

当前容量

setLength

public void setLength(int newLength)

设置字符序列的长度。 该序列更改为长度由参数指定的新字符序列。 对于每个小于newLength的非负索引k,如果k小于旧字符序列的长度,则新字符序列中索引k处的字符与旧序列中索引k处的字符相同; 否则,它是空字符’\u0000’。 换言之,如果 newLength 参数小于当前长度,则将长度更改为指定长度。

如果 newLength 参数大于或等于当前长度,则附加足够的空字符 (‘\u0000’),以便长度成为 newLength 参数。

newLength 参数必须大于或等于 0。

参数:

参数名称参数描述
newLength新长度

Throws:

Throw名称Throw描述
IndexOutOfBoundsException如果 newLength 参数为负数。

ensureCapacity

public void ensureCapacity(int minimumCapacity)

确保容量至少等于指定的最小值。 如果当前容量小于参数,则分配具有更大容量的新内部数组。 新容量是以下两者中的较大者:

  • minimumCapacity 参数。
  • 旧容量的两倍,加上 2。

如果 minimumCapacity 参数为非正数,则此方法不执行任何操作并简单地返回。 请注意,对该对象的后续操作可能会将实际容量减少到此处请求的容量以下。

参数:

参数名称参数描述
minimumCapacity所需的最小容量。

codePointBefore

public int codePointBefore(int index)

返回指定索引之前的字符(Unicode 代码点)。 索引指的是 char 值(Unicode 代码单元),范围从 1 到 length()。

如果 (index – 1) 处的 char 值在低代理范围内,(index – 2) 不为负,并且 (index – 2) 处的 char 值在高代理范围内,则补充代码点 返回代理对的值。 如果索引 – 1 处的 char 值是未配对的低代理或高代理,则返回代理值。

参数:

参数名称参数描述
index应返回的代码点之后的索引

返回:

给定索引之前的 Unicode 代码点值。

Throws:

Throw名称Throw描述
IndexOutOfBoundsException如果 index 参数小于 1 或大于此序列的长度。

charAt

public char charAt(int index)

返回此序列中指定索引处的 char 值。 第一个 char 值在索引 0 处,下一个在索引 1 处,依此类推,就像在数组索引中一样。

index 参数必须大于或等于 0,并且小于此序列的长度。

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

指定者:

接口 CharSequence 中的 charAt

参数:

参数名称参数描述
index所需 char 值的索引。

返回:

指定索引处的 char 值。

Throws:

Throw名称Throw描述
IndexOutOfBoundsException如果 index 为负数或大于或等于 length()。

codePointCount

public int codePointCount(int beginIndex, int endIndex)

返回此序列的指定文本范围内的 Unicode 代码点数。 文本范围从指定的 beginIndex 开始并扩展到索引 endIndex – 1 处的字符。因此,文本范围的长度(以字符为单位)为 endIndex-beginIndex。 此序列中的未配对代理各自计为一个代码点。

参数:

参数名称参数描述
beginIndex文本范围的第一个字符的索引。
endIndex文本范围的最后一个字符之后的索引。

返回:

指定文本范围内的 Unicode 代码点数

Throws:

Throw名称Throw描述
IndexOutOfBoundsException如果 beginIndex 为负数,或者 endIndex 大于此序列的长度,或者 beginIndex 大于 endIndex。

offsetByCodePoints

public int offsetByCodePoints(int index, int codePointOffset)

返回此序列中从给定索引偏移 codePointOffset 代码点的索引。 由 index 和 codePointOffset 给出的文本范围内的未配对代理分别计为一个代码点。

参数:

参数名称参数描述
index要偏移的索引
codePointOffset代码点的偏移量

返回:

此序列中的索引

Throws:

Throw名称Throw描述
IndexOutOfBoundsException如果 index 为负或大于此序列的长度,或者如果 codePointOffset 为正并且以 index 开头的子序列的代码点少于 codePointOffset,或者如果 codePointOffset 为负并且 index 之前的子序列小于 codePointOffset 代码的绝对值 点。

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

(0)
管理的头像管理
上一篇2025-04-02 00:11
下一篇 2025-04-02 00:12

相关推荐

  • 云服务器和云虚拟主机怎么选?云服务器和虚拟主机区别

    云服务器适合业务增长快、需弹性扩展的场景,而云虚拟主机适合预算有限、技术门槛低的小型静态网站或测试环境,二者核心区别在于资源独享性与运维复杂度,核心差异解析:从底层架构到使用体验很多人容易混淆这两者,觉得它们都是“买空间建站”,它们的底层逻辑完全不同,云服务器(ECS)就像是你租了一整栋别墅,水电网络独立,你想……

    2026-06-29
    0
  • 赣州智慧旅游招聘是真的吗?赣州旅游人才招聘信息

    中级岗位(3-5年经验)月薪范围通常在6000-10000元,这类岗位需要独立负责项目模块,如独立运营一个抖音账号,或维护一个景区小程序的功能迭代,具备成功案例的候选人议价能力较强,高级岗位(5年以上经验)月薪范围通常在10000-20000元,部分核心管理岗可达更高,这类人才需要具备战略规划能力,如制定整个景……

    2026-06-29
    0
  • 赣州智能物联网车位锁如何管理?智能车位锁管理系统多少钱

    赣州智能物联网车位锁管理的核心在于通过云端平台实现远程控锁、状态实时监控及自动计费,彻底解决传统车位“被占难管”与“找位难”的痛点,在赣州这样的城市,随着机动车保有量的持续增长,老旧小区、商业综合体以及私人固定车位的资源矛盾日益凸显,传统的机械地锁或简易遥控锁,不仅操作繁琐,更无法实现数据化管理,引入智能物联网……

    2026-06-29
    0
  • 赣州智能消防栓好用吗,智能消防栓多少钱一个

    赣州智能消防栓通过物联网技术实现实时监测与远程报警,能显著降低火灾响应时间并提升城市消防安全管理水平,是目前智慧城市建设中不可或缺的基础设施,赣州智能消防栓的核心价值与应用场景传统消防栓往往存在“看不见、摸不着、用不了”的痛点,在赣州这样地形复杂、老城区与新城区并存的区域,传统设施的管理难度极大,智能消防栓的出……

    2026-06-29
    0
  • 云服务器和物理机到底有啥区别?

    云服务器本质上是虚拟化资源池中的弹性实例,而传统物理服务器是独占的硬件实体,前者胜在弹性与运维便捷,后者强在物理隔离与性能稳定,具体选择取决于业务对成本、扩展性及安全合规的权衡,很多人初次接触服务器时,容易把“云服务器”和“传统物理服务器”混为一谈,觉得它们都是用来跑网站或存数据的盒子,这两者的底层逻辑完全不同……

    2026-06-29
    0

发表回复

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