首页 > 代码库 > StringBuilder类
StringBuilder类
java.lang.Object java.lang.StringBuilder
- 所有已实现的接口:
- Serializable, Appendable, CharSequence
public final class StringBuilder
一个可变的字符序列。此类提供一个与 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
。
构造方法摘要
StringBuilder()
构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。
StringBuilder(CharSequence seq)
构造一个字符串生成器,它包含与指定的 CharSequence
相同的字符。
StringBuilder(int capacity)
构造一个不带任何字符的字符串生成器,其初始容量由 capacity
参数指定。
StringBuilder(String str)
构造一个字符串生成器,并初始化为指定的字符串内容。
方法摘要
StringBuilder
append(boolean b)
将 boolean
参数的字符串表示形式追加到序列。
StringBuilder
append(char c)
将 char
参数的字符串表示形式追加到此序列。
StringBuilder
append(char[] str)
将 char
数组参数的字符串表示形式追加到此序列。
StringBuilder
append(char[] str, int offset, int len)
将 char
数组参数的子数组的字符串表示形式追加到此序列。
StringBuilder
append(CharSequence s)
向此 Appendable 追加到指定的字符序列。
StringBuilder
append(CharSequence s, int start, int end)
将指定 CharSequence
的子序列追加到此序列。
StringBuilder
append(double d)
将 double
参数的字符串表示形式追加到此序列。
StringBuilder
append(float f)
将 float
参数的字符串表示形式追加到此序列。
StringBuilder
append(int i)
将 int
参数的字符串表示形式追加到此序列。
StringBuilder
append(long lng)
将 long
参数的字符串表示形式追加到此序列。
StringBuilder
append(Object obj)
追加 Object
参数的字符串表示形式。
StringBuilder
append(String str)
将指定的字符串追加到此字符序列。
StringBuilder
append(StringBuffer sb)
将指定的 StringBuffer 追加到此序列。
StringBuilder
appendCodePoint(int codePoint)
将 codePoint
参数的字符串表示形式追加到此序列。
int
capacity()
返回当前容量。
char
charAt(int index)
返回此序列中指定索引处的 char
值。
int
codePointAt(int index)
返回指定索引处的字符(统一代码点)。
int
codePointBefore(int index)
返回指定索引前的字符(统一代码点)。
int
codePointCount(int beginIndex, int endIndex)
返回此序列指定文本范围内的统一代码点。
StringBuilder
delete(int start, int end)
移除此序列的子字符串中的字符。
StringBuilder
deleteCharAt(int index)
移除此序列指定位置上的 char
。
void
ensureCapacity(int minimumCapacity)
确保容量至少等于指定的最小值。
void
getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
将字符从此序列复制到目标字符数组 dst
。
int
indexOf(String str)
返回第一次出现的指定子字符串在该字符串中的索引。
int
indexOf(String str, int fromIndex)
从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。
StringBuilder
insert(int offset, boolean b)
将 boolean
参数的字符串表示形式插入此序列中。
StringBuilder
insert(int offset, char c)
将 char
参数的字符串表示形式插入此序列中。
StringBuilder
insert(int offset, char[] str)
将 char
数组参数的字符串表示形式插入此序列中。
StringBuilder
insert(int index, char[] str, int offset, int len)
将数组参数 str
子数组的字符串表示形式插入此序列中。
StringBuilder
insert(int dstOffset, CharSequence s)
将指定 CharSequence
插入此序列中。
StringBuilder
insert(int dstOffset, CharSequence s, int start, int end)
将指定 CharSequence
的子序列插入此序列中。
StringBuilder
insert(int offset, double d)
将 double
参数的字符串表示形式插入此序列中。
StringBuilder
insert(int offset, float f)
将 float
参数的字符串表示形式插入此序列中。
StringBuilder
insert(int offset, int i)
将 int
参数的字符串表示形式插入此序列中。
StringBuilder
insert(int offset, long l)
将 long
参数的字符串表示形式插入此序列中。
StringBuilder
insert(int offset, Object obj)
将 Object
参数的字符串表示形式插入此字符序列中。
StringBuilder
insert(int offset, String str)
将字符串插入此字符序列中。
int
lastIndexOf(String str)
返回最右边出现的指定子字符串在此字符串中的索引。
int
lastIndexOf(String str, int fromIndex)
返回最后一次出现的指定子字符串在此字符串中的索引。
int
length()
返回长度(字符数)。
int
offsetByCodePoints(int index, int codePointOffset)
返回此序列中的一个索引,该索引是从给定 index
偏移 codePointOffset
个代码点后得到的。
StringBuilder
replace(int start, int end, String str)
使用给定 String
中的字符替换此序列的子字符串中的字符。
StringBuilder
reverse()
将此字符序列用其反转形式取代。
void
setCharAt(int index, char ch)
将给定索引处的字符设置为 ch
。
void
setLength(int newLength)
设置字符序列的长度。
CharSequence
subSequence(int start, int end)
返回一个新字符序列,该字符序列是此序列的子序列。
String
substring(int start)
返回一个新的 String
,它包含此字符序列当前所包含字符的子序列。
String
substring(int start, int end)
返回一个新的 String
,它包含此序列当前所包含字符的子序列。
String
toString()
返回此序列中数据的字符串表示形式。
void
trimToSize()
尝试减少用于字符序列的存储空间。
构造方法详细信息
StringBuilder
public StringBuilder()
- 构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。
StringBuilder
public StringBuilder(int capacity)
- 构造一个不带任何字符的字符串生成器,其初始容量由
capacity
参数指定。- 参数:
capacity
- 初始容量。- 抛出:
NegativeArraySizeException
- 如果capacity
参数小于0
。
StringBuilder
public StringBuilder(String str)
- 构造一个字符串生成器,并初始化为指定的字符串内容。该字符串生成器的初始容量为
16
加上字符串参数的长度。- 参数:
str
- 缓冲区的初始内容。- 抛出:
NullPointerException
- 如果str
为null
StringBuilder
public StringBuilder(CharSequence seq)
- 构造一个字符串生成器,包含与指定的
CharSequence
相同的字符。该字符串生成器的初始容量为16
加上CharSequence
参数的长度。- 参数:
seq
- 要复制的序列。- 抛出:
NullPointerException
- 如果seq
为null
方法详细信息
append
public StringBuilder append(Object obj)
- 追加
Object
参数的字符串表示形式。参数将被转换成字符串,就好象使用了
String.valueOf
方法一样。然后,将所得字符串中的字符追加到此序列。 - 参数:
obj
- 一个Object
。- 返回:
- 此对象的一个引用。
- 另请参见:
String.valueOf(java.lang.Object)
,append(java.lang.String)
append
public StringBuilder append(String str)
- 将指定的字符串追加到此字符序列。
按顺序追加
String
变量中的字符,此序列将增加该变量的长度。如果str
为null
,则追加 4 个字符"null"
。假设此字符序列的长度在执行
append
方法前为 n。如果 k 小于 n,则新字符序列中索引 k 处的字符等于原序列中索引 k 处的字符;否则它等于参数str
中索引 k-n 处的字符。 - 参数:
str
- 一个 string。- 返回:
- 此对象的一个引用。
append
public StringBuilder append(StringBuffer sb)
- 将指定的 StringBuffer 追加到此序列。
按顺序追加 StringBuffer 参数中的字符,此序列将增加该参数的长度。如果 sb 为 null,则向该序列中追加 4 个 "null" 字符。
在执行 append 方法前,让此字符序列的长度为 n。如果 k 小于 n,则新字符序列中索引 k 处的字符等于原有序列中索引 k 处的字符;否则它等于参数
sb
中索引 k-n 处的字符。 - 参数:
sb
- 要追加的 StringBuffer。- 返回:
- 此对象的一个引用。
append
public StringBuilder append(CharSequence s)
- 从接口
Appendable
复制的描述 - 向此 Appendable 追加指定的字符序列。
有时可能没有追加整个序列,这取决于使用哪个类来实现字符序列 csq。例如,如果 csq 是
CharBuffer
的一个实例,则通过缓冲区的位置和限制来定义要追加的子序列。 - 指定者:
- 接口
Appendable
中的append
- 参数:
s
- 要追加的字符串序列。如果 csq 为 null,则向该 Appendable 追加 4 个字符 "null"。- 返回:
- 此 Appendable 的引用
- 抛出:
IndexOutOfBoundsException
append
public StringBuilder append(CharSequence s, int start, int end)
- 将指定
CharSequence
的子序列追加到此序列。将参数
s
中从索引start
到索引end
的字符按顺序追加到此序列。序列的长度将增加end - start
。假设此字符序列的长度在执行
append
方法前为 n。如果 k 小于 n,则新字符序列中索引 k 处的字符等于原序列中索引 k 处的字符;否则它等于参数s
中索引 k+start-n 处的字符。如果
s
为null
,则认为 s 参数包含 4 个字符"null"
,并以此为根据追加字符。 - 指定者:
- 接口
Appendable
中的append
- 参数:
s
- 要追加的序列。start
- 要追加的子序列的起始索引。end
- 要追加的子序列的结束索引。- 返回:
- 此对象的一个引用。
- 抛出:
IndexOutOfBoundsException
如果start
或end
为负;或者start
大于end
;或者end
大于s.length()
append
public StringBuilder append(char[] str)
- 将
char
数组参数的字符串表示形式追加到此序列。按顺序将数组参数中的字符追加到此序列中。此字符将增加该参数的长度。
该方法的最终效果与以下操作过程的效果相同:先使用
String.valueOf(char[])
方法将参数转换为字符串,然后将所得字符串的字符追加
到此字符序列。 - 参数:
str
- 要追加的字符。- 返回:
- 此对象的一个引用。
append
public StringBuilder append(char[] str, int offset, int len)
- 将数组参数
char
子数组的字符串表示形式追加到此序列。将
char
数组str
中从索引offset
开始的字符按顺序追加到此序列。此字符的长度增加len
。该方法的最终效果与以下操作过程的效果相同:先使用
String.valueOf(char[])
方法将参数转换为字符串,然后将所得字符串的字符追加
到此字符序列。 - 参数:
str
- 要追加的字符。offset
- 要追加的第一个char
的索引。len
- 要追加的char
数。- 返回:
- 此对象的一个引用。
append
public StringBuilder append(boolean b)
- 将
boolean
参数的字符串表示形式追加到序列。参数将被转换成字符串,就好象使用了
String.valueOf
方法一样。然后,将所得字符串中的字符追加到此序列。 - 参数:
b
- 一个boolean
值。- 返回:
- 此对象的一个引用。
- 另请参见:
String.valueOf(boolean)
,append(java.lang.String)
append
public StringBuilder append(char c)
- 将
char
参数的字符串表示形式追加到此序列。参数将被追加到此序列。此序列的长度将增加
1
。该方法的最终效果与以下操作过程的效果相同:先使用
String.valueOf(char[])
方法将参数转换为字符串,然后将所得字符串的字符追加
到此字符序列。 - 指定者:
- 接口
Appendable
中的append
- 参数:
c
- 一个char
值。- 返回:
- 此对象的一个引用。
append
public StringBuilder append(int i)
- 将
int
参数的字符串表示形式追加到此序列。参数将被转换成字符串,就好象使用了
String.valueOf
方法一样。然后,将所得字符串中的字符追加到此序列。 - 参数:
i
- 一个int
值。- 返回:
- 此对象的一个引用。
- 另请参见:
String.valueOf(int)
,append(java.lang.String)
append
public StringBuilder append(long lng)
- 将
long
参数的字符串表示形式追加到此序列。参数将被转换成字符串,就好象使用了
String.valueOf
方法一样。然后,将所得字符串中的字符追加到此序列。 - 参数:
lng
- 一个long
值。- 返回:
- 此对象的一个引用。
- 另请参见:
String.valueOf(long)
,append(java.lang.String)
append
public StringBuilder append(float f)
- 将
float
参数的字符串表示形式追加到此序列。参数将被转换成字符串,就好象使用了
String.valueOf
方法一样。然后,将所得字符串中的字符追加到此字符串序列。 - 参数:
f
- 一个float
值。- 返回:
- 此对象的一个引用。
- 另请参见:
String.valueOf(float)
,append(java.lang.String)
append
public StringBuilder append(double d)
- 将
double
参数的字符串表示形式追加到此序列。参数将被转换成字符串,就好象使用了
String.valueOf
方法一样。然后,将所得字符串中的字符追加到此序列。 - 参数:
d
- 一个double
值。- 返回:
- 此对象的一个引用。
- 另请参见:
String.valueOf(double)
,append(java.lang.String)
appendCodePoint
public StringBuilder appendCodePoint(int codePoint)
- 将
codePoint
参数的字符串表示形式追加到此序列。参数将被追加到此序列。此序列的长度将增加
Character.charCount(codePoint)
。该方法的最终效果与以下操作过程的效果相同:先使用
Character.toChars(int)
方法将char
数组转换为字符串,然后将所得字符串的字符追加
到此字符序列。 - 参数:
codePoint
- 一个 Unicode 代码点- 返回:
- 此对象的一个引用。
- 从以下版本开始:
- 1.5
delete
public StringBuilder delete(int start, int end)
- 移除此序列的子字符串中的字符。该子字符串从指定的
start
处开始,一直到索引end - 1
处的字符,如果不存在这种字符,则一直到序列尾部。如果start
等于end
,则不发生任何更改。 - 参数:
start
- 起始索引(包含)。end
- 结束索引(不包含)。- 返回:
- 此对象。
- 抛出:
StringIndexOutOfBoundsException
- 如果start
为负、大于length()
或大于end
。
deleteCharAt
public StringBuilder deleteCharAt(int index)
- 移除此序列指定位置上的
char
。此序列将缩短一个char
。注:如果给定索引处的字符是增补字符,则此方法将不会移除整个字符。如果需要准确处理增补字符,那么可以通过调用
Character.charCount(thisSequence.codePointAt(index))
(用此序列取代thisSequence
)来确定要移除的char
数。 - 参数:
index
- 要移除的char
的索引- 返回:
- 此对象。
- 抛出:
StringIndexOutOfBoundsException
- 如果index
为负或大于等于length()
。
replace
public StringBuilder replace(int start, int end, String str)
- 使用给定
String
中的字符替换此序列的子字符串中的字符。该子字符串从指定的start
处开始,一直到索引end - 1
处的字符,如果不存在这种字符,则一直到序列尾部。先将子字符串中的字符移除,然后将指定的String
插入start
。(如果需要,序列将延长,以适应指定的字符串。) - 参数:
start
- 起始索引(包含)。end
- 结束索引(不包含)。str
- 将替换原有内容的字符串。- 返回:
- 此对象。
- 抛出:
StringIndexOutOfBoundsException
- 如果start
为负、大于length()
或大于end
。
insert
public StringBuilder insert(int index, char[] str, int offset, int len)
- 将
str
数组参数的子数组的字符串表示形式插入此序列中。子数组从指定的offset
开始,包含len
个char
。子数组的字符将被插入index
所指示的位置。此序列的长度将加len
个char
。 - 参数:
index
- 要插入子数组的位置。str
- 一个char
数组。offset
- 将插入子数组中的第一个char
的索引。len
- 将插入子数组中的char
的数量。- 返回:
- 此对象
- 抛出:
StringIndexOutOfBoundsException
- 如果index
为负或大于length()
;或者offset
或len
为负;或者(offset+len)
大于str.length
。
insert
public StringBuilder insert(int offset, Object obj)
- 将
Object
参数的字符串表示形式插入此字符序列中。第二个参数将被转换成字符串,就好象使用了
String.valueOf
方法一样。然后,将所得字符串中的字符追加到此序列。offset 参数必须大于等于
0
,且小于等于此序列的长度。 - 参数:
offset
- 偏移量。obj
- 一个Object
。- 返回:
- 此对象的一个引用。
- 抛出:
StringIndexOutOfBoundsException
- 如果 offset 参数无效。- 另请参见:
String.valueOf(java.lang.Object)
,insert(int, java.lang.String)
,length()
insert
public StringBuilder insert(int offset, String str)
- 将字符串插入此字符序列。
按顺序将
String
参数中的字符插入此序列中的指定位置,将该位置处原来的字符向后推,此序列将增加该参数的长度。如果str
为null
,则向此序列中追加 4 个字符"null"
。新字符序列在索引 k 处的字符有以下几种情况:
- 如果 k 小于
offset
,则等于原字符序列中索引 k 处的字符。 - 如果 k 不小于
offset
但小于offset+str.length()
,则等于str
参数中索引 k-offset
中的字符。 - 如果 k 不小于
offset+str.length()
,则等于原字符序列中索引 k-str.length()
处的字符
offset 参数必须大于等于
0
,且小于等于此序列的长度。 - 如果 k 小于
- 参数:
offset
- 偏移量。str
- 一个 string。- 返回:
- 此对象的一个引用。
- 抛出:
StringIndexOutOfBoundsException
- 如果 offset 参数无效。- 另请参见:
length()
insert
public StringBuilder insert(int offset, char[] str)
- 将
char
数组参数的字符串表示形式插入此序列中。数组参数的字符将被插入此序列中
offset
所指示的位置处。此字符将增加该参数的长度。该方法的最终效果与以下操作过程的效果相同:先使用
String.valueOf(char[])
方法将参数转换为字符串,然后将所得字符串的字符插入
到此字符序列中offset
所指示的位置。 - 参数:
offset
- 偏移量。str
- 一个字符数组。- 返回:
- 此对象的一个引用。
- 抛出:
StringIndexOutOfBoundsException
- 如果 offset 参数无效。
insert
public StringBuilder insert(int dstOffset, CharSequence s)
- 将指定
CharSequence
插入此序列中。按顺序将
CharSequence
参数中的字符插入此序列中的指定位置,位于该位置处的原有字符将向后移,此序列将增加该参数的长度。此方法的结果与调用此对象的 insert(dstOffset, s, 0, s.length()) 方法的结果完全相同。
如果
s
为null
,则向此序列中追加 4 个字符"null"
。 - 参数:
dstOffset
- 偏移量。s
- 要插入的序列。- 返回:
- 此对象的一个引用。
- 抛出:
StringIndexOutOfBoundsException
- 如果 offset 参数无效。
insert
public StringBuilder insert(int dstOffset, CharSequence s, int start, int end)
- 将指定
CharSequence
的子序列插入此序列中。参数
s
中,由start
和end
指示的子序列将按顺序被插入此序列指定的目标偏移量处,位于该位置处的任何原有字符都将向后移。序列的长度将增加end - start
。此字符序列在索引 k 处的字符将有以下几种情况:
- 如果 k 小于
dstOffset
,则等于原字符序列中索引 k 处的字符。 - 如果 k 大于等于
dstOffset
,但小于dstOffset+end-start
,则等于s
参数中索引 k+start-dstOffset
处的字符 - 如果 k 大于等于
dstOffset+end-start
,则等于此序列中索引 k-(end-start)
处的字符
dstOffset 参数必须大于等于
0
,并小于等于此序列的长度。start 参数必须为非负,但不得大于
end
。end 数必须大于等于
start
,且小于等于 s 的长度。如果
s
为null
,则认为 s 参数包含 4 个字符"null"
,并以此为根据插入字符。 - 如果 k 小于
- 参数:
dstOffset
- 此序列中的偏移量。s
- 要插入的序列。start
- 要插入的子序列的起始索引。end
- 要插入的子序列的结束索引。- 返回:
- 此对象的一个引用。
- 抛出:
IndexOutOfBoundsException
- 如果dstOffset
为负或大于this.length()
;或者start
或end
为负;或者start
大于end
;或者end
大于s.length()
insert
public StringBuilder insert(int offset, boolean b)
- 将
boolean
参数的字符串表示形式插入此序列中。第二个参数将被转换成字符串,就好象使用了
String.valueOf
方法一样。然后,将所得字符串中的字符追加到此序列。offset 参数必须大于等于
0
,且小于等于此序列的长度。 - 参数:
offset
- 偏移量。b
- 一个boolean
值。- 返回:
- 此对象的一个引用。
- 抛出:
StringIndexOutOfBoundsException
- 如果 offset 参数无效。- 另请参见:
String.valueOf(boolean)
,insert(int, java.lang.String)
,length()
insert
public StringBuilder insert(int offset, char c)
- 将
char
参数的字符串表示形式插入此序列中。第二个参数将被插入此序列中
offset
指示的位置处。此序列的长度将增加 1。该方法的结果与以下操作的结果相同:先使用
String.valueOf(char)
方法将参数转换为字符串,然后将所得字符串中的字符插入
此字符序列中offset
指定的位置处。offset 参数必须大于等于
0
,且小于等于此序列的长度。 - 参数:
offset
- 偏移量。c
- 一个char
值。- 返回:
- 此对象的一个引用。
- 抛出:
StringIndexOutOfBoundsException
- 如果 offset 参数无效。- 另请参见:
length()
insert
public StringBuilder insert(int offset, int i)
- 将
int
参数的字符串表示形式插入此序列中。第二个参数将被转换成字符串,就好象使用了
String.valueOf
方法一样。然后,将所得字符串中的字符追加到此序列。offset 参数必须大于等于
0
,且小于等于此序列的长度。 - 参数:
offset
- 偏移量。i
- 一个int
值。- 返回:
- 此对象的一个引用。
- 抛出:
StringIndexOutOfBoundsException
- 如果 offset 参数无效。- 另请参见:
String.valueOf(int)
,insert(int, java.lang.String)
,length()
insert
public StringBuilder insert(int offset, long l)
- 将
long
参数的字符串表示形式插入此序列中。第二个参数将被转换成字符串,就好象使用了
String.valueOf
方法一样。然后,将所得字符串中的字符追加到此序列中offset
指示的位置处。offset 参数必须大于等于
0
,且小于等于此序列的长度。 - 参数:
offset
- 偏移量。l
- 一个long
值。- 返回:
- 此对象的一个引用。
- 抛出:
StringIndexOutOfBoundsException
- 如果 offset 参数无效。- 另请参见:
String.valueOf(long)
,insert(int, java.lang.String)
,length()
insert
public StringBuilder insert(int offset, float f)
- 将
float
参数的字符串表示形式插入此序列中。第二个参数将被转换成字符串,就好象使用了
String.valueOf
方法一样。然后,将所得字符串中的字符追加到此序列。offset 参数必须大于等于
0
,且小于等于此序列的长度。 - 参数:
offset
- 偏移量。f
- 一个float
值。- 返回:
- 此对象的一个引用。
- 抛出:
StringIndexOutOfBoundsException
- 如果 offset 参数无效。- 另请参见:
String.valueOf(float)
,insert(int, java.lang.String)
,length()
insert
public StringBuilder insert(int offset, double d)
- 将
double
参数的字符串表示形式插入此序列中。第二个参数将被转换成字符串,就好象使用了
String.valueOf
方法一样。然后,将所得字符串中的字符追加到此序列。offset 参数必须大于等于
0
,且小于等于此序列的长度。 - 参数:
offset
- 偏移量。d
- 一个double
值。- 返回:
- 此对象的一个引用。
- 抛出:
StringIndexOutOfBoundsException
- 如果 offset 参数无效。- 另请参见:
String.valueOf(double)
,insert(int, java.lang.String)
,length()
indexOf
public int indexOf(String str)
- 返回第一次出现的指定子字符串在该字符串中的索引。返回的整数是满足以下条件的最小 k 值:
this.toString().startsWith(str, k)
- 参数:
str
- 任意字符串。- 返回:
- 如果字符串参数是作为一个子字符串出现在该对象中,则返回第一个这样的子字符串的第一个字符的索引;如果它不是作为一个子字符串出现,则返回
-1
。 - 抛出:
NullPointerException
- 如果str
为null
。
indexOf
public int indexOf(String str, int fromIndex)
- 从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。返回的整数是满足以下条件的最小 k 值:
k >= Math.min(fromIndex, str.length()) && this.toString().startsWith(str, k)
- 参数:
str
- 要搜索的子字符串。fromIndex
- 搜索开始处的索引。- 返回:
- 从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。
- 抛出:
NullPointerException
- 如果str
为null
。
lastIndexOf
public int lastIndexOf(String str)
- 返回最右边出现的指定子字符串在此字符串中的索引。将最右边的空字符串 "" 视为出现在索引值
this.length()
处。返回的索引是满足以下条件的最大 k 值:this.toString().startsWith(str, k)
- 参数:
str
- 要搜索的子字符串。- 返回:
- 如果在该对象中字符串参数是作为一个子字符串出现多次,则返回最后一个这种子字符串的第一个字符。如果它不是作为一个子字符串出现,则返回
-1
。 - 抛出:
NullPointerException
- 如果str
为null
。
lastIndexOf
public int lastIndexOf(String str, int fromIndex)
- 返回最后一次出现的指定子字符串在此字符串中的索引。返回的整数是满足以下条件的最大 k 值:
k <= Math.min(fromIndex, str.length()) && this.toString().startsWith(str, k)
- 参数:
str
- 要搜索的子字符串。fromIndex
- 搜索开始处的索引。- 返回:
- 最后一次出现的指定子字符串在此字符串中的索引。
- 抛出:
NullPointerException
- 如果str
为null
。
reverse
public StringBuilder reverse()
- 将此字符序列用其反转形式取代。如果序列中存在代理项对 (surrogate pair),在 reverse 操作中将其作为单个字符处理。因此,高-低代理项的顺序不会反转。假设 n 为执行
reverse
方法前此字符序列的字符长度(并非char
值的长度),则新字符序列中索引 k 处的字符将等于原字符序列索引 n-k-1 处的字符。注意,进行 reverse 操作后,执行操作前未成对的低代理项和高代理项将成为代理项对。例如,反转 "\uDC00\uD800" 将生成有效的代理项对 "\uD800\uDC00"。
- 返回:
- 此对象的一个引用。
toString
public String toString()
- 返回此序列中数据的字符串表示形式。将分配一个新的
String
对象,并将它初始化,以包含当前由此对象表示的字符串序列。然后返回此String
。对此序列的后续更改不影响该String
的内容。 - 指定者:
- 接口
CharSequence
中的toString
- 返回:
- 此字符序列的字符串表示形式。
length
public int length()
- 返回长度(字符数)。
- 指定者:
- 接口
CharSequence
中的length
- 返回:
- 此对象表示的当前字符序列的长度。
capacity
public int capacity()
- 返回当前容量。容量指可用于最新插入字符的存储量,超过这一容量便需要再次分配。
- 返回:
- 当前容量。
ensureCapacity
public void ensureCapacity(int minimumCapacity)
- 确保容量至少等于指定的最小值。如果当前容量小于参数,则可分配一个更大容量的新内部数组。新容量的大小应大于:
minimumCapacity
参数。- 旧容量的两倍加
2
。
minimumCapacity
参数为非正数,则此方法不执行任何操作并返回。 - 参数:
minimumCapacity
- 所需容量的最小值。
trimToSize
public void trimToSize()
- 尝试减少用于字符序列的存储空间。如果缓冲区大于保存当前字符序列所需的存储空间,则将重新调整其大小,以便更好地利用存储空间。调用此方法可能影响后续调用
capacity()
方法时返回的值(但不要求如此)。
setLength
public void setLength(int newLength)
- 设置字符序列的长度。序列将被更改为一个新的字符序列,新序列的长度由参数指定。对于每个小于
newLength
的非负索引 k,如果 k 小于原字符序列的长度,则新字符序列索引 k 处的字符与原字符序列索引 k 处的字符相同;否则,新字符序列索引 k 处的字符将是 null 字符‘\u0000‘
。换句话说,如果newLength
参数小于当前长度,则长度将更改为指定的长度。如果
newLength
参数大于或等于当前长度,则将追加有效的 null 字符 (‘\u0000‘
),使长度满足newLength
参数。newLength
参数必须大于等于0
。 - 参数:
newLength
- 新长度- 抛出:
IndexOutOfBoundsException
- 如果newLength
参数为负。
charAt
public char charAt(int index)
- 返回此序列中指定索引处的
char
值。第一个char
值在索引0
处,第二个在索引1
处,依此类推,这类似于数组索引。index 参数必须大于等于
0
,且小于此序列的长度。如果索引指定的
char
值是代理项,则返回该代理项的值。 - 指定者:
- 接口
CharSequence
中的charAt
- 参数:
index
- 所需char
值的索引。- 返回:
- 指定索引处的
char
值。 - 抛出:
IndexOutOfBoundsException
- 如果index
为负或大于等于length()
。
codePointAt
public int codePointAt(int index)
- 返回指定索引处的字符(统一代码点)。该索引引用
char
值(Unicode 代码单元),其范围是从0
到length()
- 1
。如果给定的索引指定的
char
值属于高代理项范围,则后续索引小于此序列的长度;如果后续索引处的char
值属于低代理项范围,则返回该代理项对对应的增补代码点。否则,返回给定索引上的char
值。 - 参数:
index
-char
值的索引。- 返回:
index
处字符的代码点值。- 抛出:
IndexOutOfBoundsException
- 如果index
参数为负或小于此序列的长度。
codePointBefore
public int codePointBefore(int index)
- 返回指定索引前的字符(统一代码点)。该索引引用
char
值(Unicode 代码单元),其范围是从1
到length()
。如果
(index - 1)
处的char
值属于低代理项范围,则(index - 2)
为非负;如果(index - 2)
处的char
值属于高代理项范围,则返回该代理项对的增补代码点值。如果index - 1
处的char
值是未配对的低(高)代理项,则返回代理项值。 - 参数:
index
- 应该返回的代码点之后的索引。- 返回:
- 给定索引之前的 Unicode 代码点值。
- 抛出:
IndexOutOfBoundsException
- 如果index
参数小于 1 或大于此序列的长度。
codePointCount
public int codePointCount(int beginIndex, int endIndex)
- 返回此序列指定文本范围内的统一代码点。文本范围始于指定的
beginIndex
,并扩展到索引endIndex - 1
上的char
。因此文本范围的长度(char
形式)为endIndex-beginIndex
。该序列中每个未配对的代理项都被作为一个代码点进行计数。 - 参数:
beginIndex
- 该文本范围第一个char
的索引。endIndex
- 该文本范围最后一个char
之后的索引。- 返回:
- 指定文本范围内的 Unicode 代码点的数量。
- 抛出:
IndexOutOfBoundsException
- 如果beginIndex
为负;或者endIndex
大于此序列的长度;或者beginIndex
大于endIndex
。
offsetByCodePoints
public int offsetByCodePoints(int index, int codePointOffset)
- 返回此序列中的一个索引,该索引是从给定
index
偏移codePointOffset
个代码点后得到的。index
和codePointOffset
给出的文本范围内的不成对代理项是按一个代码点算作一个项进行计数的。 - 参数:
index
- 将进行偏移的索引codePointOffset
- 用代码点计算的偏移量- 返回:
- 此序列中的索引
- 抛出:
IndexOutOfBoundsException
- 如果index
为负或大于字符序列的长度;或者codePointOffset
为负并且起始于index
的子序列拥有的偏移量少于codePointOffset
代码点;或者codePointOffset
为负并且index
前面的子序列的偏移量少于codePointOffset
代码点的绝对值。
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
中的偏移量。- 抛出:
NullPointerException
- 如果dst
为null
。IndexOutOfBoundsException
- 如果以下任意一项为 true:srcBegin
为负dstBegin
为负srcBegin
参数大于srcEnd
参数。srcEnd
大于this.length()
。dstBegin+srcEnd-srcBegin
大于dst.length
setCharAt
public void setCharAt(int index, char ch)
- 将给定索引处的字符设置为
ch
。此序列将被转换,以表示等同于原字符序列的新字符序列,唯一的不同在于新序列在index
处包含ch
。index 参数必须大于等于
0
,且小于此序列的长度。 - 参数:
index
- 要修改的字符的索引。ch
- 新字符。- 抛出:
IndexOutOfBoundsException
- 如果index
为负或大于等于length()
。
substring
public String substring(int start)
- 返回一个新的
String
,它包含此字符序列当前所包含的字符子序列。该子字符串始于指定索引处的字符,一直到此字符串末尾。 - 参数:
start
- 起始索引(包含)。- 返回:
- 新字符串。
- 抛出:
StringIndexOutOfBoundsException
- 如果start
小于 0,或大于此对象的长度。
subSequence
public CharSequence subSequence(int start, int end)
- 返回一个新的字符序列,该字符序列是此序列的子序列。
调用该方法的形式为:
sb.subSequence(begin, end)
sb.substring(begin, end)
CharSequence
接口。 - 指定者:
- 接口
CharSequence
中的subSequence
- 参数:
start
- 起始索引(包含)。end
- 结束索引(不包含)。- 返回:
- 指定子序列。
- 抛出:
IndexOutOfBoundsException
- 如果 start 或 end 为负数;如果 end 大于 length(),或者 start 大于 end
substring
public String substring(int start, int end)
- 返回一个新的
String
,它包含此序列当前所包含字符的子序列。该子字符串从指定的start
处开始,一直到索引end - 1
处的字符。 - 参数:
start
- 起始索引(包含)。end
- 结束索引(不包含)。- 返回:
- 新字符串。
- 抛出:
StringIndexOutOfBoundsException
- 如果start
或end
为负数或大于length()
;如果start
大于end
。