Java StringBuffer类
StringBuffer 是 String 的一个同级类,提供了字符串的大部分功能。字符串表示固定长度、不可改变的字符序列,而StringBuffer表示可增长和可写入的字符序列。 StringBuffer 可以在中间插入字符和子串,或者追加到结尾。它会自动增长,以便为这些添加的内容腾出空间,通常预分配的字符比实际需要的多,以便为增长留出空间。
StringBuffer类 用于创建可变(可修改)的字符串。java中的StringBuffer类与String类相同,只是它是可变的,也就是说,它可以被改变。
StringBuffer类的重要构造函数
- StringBuffer(): 创建一个空的字符串缓冲区,初始容量为16。
- StringBuffer(String str): 用指定的字符串创建一个字符串缓冲区。
- StringBuffer(int capacity): 创建一个空的字符串缓冲区,其容量为指定的长度。
1) append()方法
append()方法将给定的参数与这个字符串连接起来。
例子
2) insert()方法
insert()方法在给定的位置插入给定的字符串与这个字符串。
例子。
3) replace()方法
replace()方法从指定的beginIndex和endIndex-1替换给定的字符串。
例子。
4) delete()方法
- StringBuffer类的delete()方法删除了从指定的beginIndex到endIndex-1的字符串。
- 例如
5) reverse()方法
StringBuilder类的reverse()方法可以反转当前字符串。例子。
6) capacity()方法
- StringBuffer类的capacity()方法返回缓冲区的当前容量。缓冲区的默认容量是16。如果字符数从当前的容量增加,它的容量将增加(oldcapacity*2)+2。
- 例如,如果你的当前容量是16,它将是(16*2)+2=34。
- 例如:
关于StringBuffer类的一些有趣的事实
请记住以下几点: ****
- java.lang.StringBuffer扩展(或继承)于Object类。
- StringBuffer类的所有实现接口。Serializable, Appendable, CharSequence.
- public final class StringBuffer extends Object implements Serializable, CharSequence, Appendable.
- 字符串缓冲区对于多线程使用是安全的。这些方法可以在任何必要的地方被同步,以便对任何特定实例的所有操作都表现得像它们以某种串行顺序发生。
- 每当涉及源序列的操作发生时(如从源序列中追加或插入),该类只在执行操作的字符串缓冲区上同步,而不是在源上。
- 它继承了Object类的一些方法,如 clone(), equals(), finalize(), getClass(), hashCode(), notifies() _, notifyAll()。_
记住: StringBuilder,J2SE 5为Java已经强大的字符串处理能力增加了一个新的字符串类。这个新的类被称为StringBuilder。它与StringBuffer相同,除了一个重要的区别:它不是同步的,这意味着它不是线程安全的。StringBuilder的优点是性能更快。然而,在使用多线程的情况下,你必须使用StringBuffer而不是StringBuilder。
StringBuffer类的构造函数
1.StringBuffer() : 它保留了16个字符的空间,无需重新分配。
2. StringBuffer( int size) : 它接受一个整数参数,明确设置缓冲区的大小。
3. StringBuffer(String str): 它接受一个字符串参数,该参数设置了StringBuffer对象的初始内容,并保留了再容纳16个字符的空间,而无需重新分配。
StringBuffer类的方法
方法 | 执行的动作 |
---|---|
append() | 用于在现有文本的末尾添加文本。 |
length() | StringBuffer的长度可以通过length()方法找到。 |
capacity() | 可以通过capacity()方法找到分配的总容量 |
charAt() | 该方法返回该序列中指定索引处的char值。 |
delete() | 从调用的对象中删除一个字符序列 |
deleteCharAt() | 删除由 loc 指定的索引处的字符。 |
ensureCapacity() | 确保容量至少等于给定的最小值。 |
insert() | 在指定的索引位置插入文本 |
length() | 返回字符串的长度 |
reverse() | 将StringBuffer对象中的字符反转。 |
replace() | 在一个StringBuffer对象中用另一组字符替换一组字符 |
注意: 除此之外,所有在String类中使用的方法也都可以使用。这些辅助方法如下。
ensureCapacity() : 它用于增加StringBuffer对象的容量。新的容量将被设置为我们指定的值或当前容量的两倍加2(即容量+2),以较大者为准。这里,容量指定了缓冲区的大小。
语法
- appendCodePoint(int codePoint) : 此方法将codePoint参数的字符串表示附加到此序列中。
语法
charAt(int index): 此方法返回此序列中指定索引处的char值。
语法
IntStream chars() : 该方法返回一个由该序列的char值组成的int zero-extending流。
语法
int codePointAt(int index) : 该方法返回指定索引处的字符(Unicode 码位)。
语法
int codePointBefore(int index) : 该方法返回指定索引前的字符(Unicode码位)。
语法
int codePointCount(int beginIndex, int endIndex) : 此方法返回此序列中指定文本范围内的Unicode代码点的数量。
语法
IntStream codePoints() : 该方法返回该序列的码点值流。
语法
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) : 在这个方法中,字符被从这个序列复制到目标字符数组dst中。
语法
int indexOf(String str) : 该方法返回指定子串第一次出现在这个字符串中的索引。
语法
int lastIndexOf(String str) : 该方法返回指定子串最后出现在这个字符串中的索引。
语法
int offsetByCodePoints(int index, int codePointOffset) :此方法返回此序列中与给定索引偏移了codePointOffset代码点的索引。
语法
void setCharAt(int index, char ch) : 在这个方法中,指定索引处的字符被设置为ch。
语法
void setLength(int newLength) : 此方法设置字符序列的长度。
语法
CharSequence subSequence(int start, int end) : 此方法返回一个新的字符序列,它是此序列的一个子序列。
语法
String substring(int start) : 该方法返回一个新的字符串,该字符串包含当前包含在该字符序列中的一个子序列的字符。
语法
String toString() : 此方法返回一个代表此序列中数据的字符串。
语法
void trimToSize() : 该方法试图减少用于字符序列的存储空间。
语法
以上我们只讨论了最广泛使用的方法,并对它们进行了严格的约束,因为它们在编程高手中被广泛使用。
实现
例1: length()和capacity()方法
输出
例2:append()
它用于在现有文本的末尾添加文本。
下面是它的几种形式。
输出
例3:insert()
它用于在指定的索引位置插入文本。
语法: 这是它的几个例子,如下。
这里, 索引 指定了字符串将被插入到调用的 StringBuffer 对象中的索引。
输出
例4:reverse( )
它可以使用 reverse( ) 对StringBuffer对象内的字符进行反转 。 该方法返回它所调用的反转对象。
输出
例5: delete()和deleteCharAt( )
通过使用 delete() 和 deleteCharAt() 方法,可以删除StringBuffer中的字符。 delete() 方法从调用对象中删除一串字符。这里,start Index指定了要删除的第一个字符的索引,end Index指定了要删除的最后一个字符之后的一个索引。因此,删除的子串从start Index到endIndex-1。结果是StringBuffer对象被返回。 deleteCharAt( ) 方法在loc指定的索引处删除字符。它返回结果的StringBuffer对象。
语法
输出
例6: replace( )
它可以通过调用replace( )将StringBuffer对象中的一组字符替换成另一组字符。被替换的子串是由startIndex和endIndex指定的。因此,从start Index到endIndex-1的子串被替换。替换的字符串以str的形式传递。得到的StringBuffer对象被返回。
语法
例子
输出