Java 中的StringBuffer
类
StringBuffer 类用于创建一个可变的字符串对象。意思是,创建后可以更改。它代表可增长和可写的字符序列。
它类似于 Java 中的 string 类,两者都是用来创建 String 的,但是 stringbuffer 对象是可以更改的。
所以 StringBuffer 类在我们必须对字符串进行大量修改时使用。它也是线程安全的,即多个线程不能同时访问它。StringBuffer 定义了 4 个构造器。
- StringBuffer ():它创建一个空的字符串缓冲区,并为 16 个字符保留空间。
- StringBuffer (int size):它创建一个空字符串,并接受一个整数参数来设置缓冲区的容量。
- StringBuffer (String str):它从指定的字符串创建 StringBuffer 对象。
- StringBuffer(charSequence[]ch):它从 charSequence 数组中创建一个 StringBuffer 对象。
示例:创建字符串填充对象
在本例中,我们使用 StrigBuffer 类创建字符串缓冲区对象,并测试其可变性。
public class Demo {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("study");
System.out.println(sb);
// modifying object
sb.append("tonight");
System.out.println(sb); // Output: studytonight
}
}
今晚学习
示例:字符串和字符串缓冲区的区别
在这个例子中,我们正在创建 String 和 stringbuffer 类的对象并修改它们,但是只有 StringBuffer 对象被修改。见下面的例子。
class Test {
public static void main(String args[])
{
String str = "study";
str.concat("tonight");
System.out.println(str); // Output: study
StringBuffer strB = new StringBuffer("study");
strB.append("tonight");
System.out.println(strB); // Output: studytonight
}
}
今晚学习
解释:
输出是这样的,因为字符串对象是不可变的对象。因此,如果我们连接在同一个字符串对象上,它不会被改变,但是 StringBuffer 会创建可变对象。因此,它可以被改变。
StringBuffer 类的重要方法
以下方法是 StringBuffer 类中一些最常用的方法。
追加()
这个方法将把任何类型数据的字符串表示连接到 StringBuffer 对象的末尾。append()
方法有几种重载形式。
StringBuffer append(String str)
StringBuffer append(int n)
StringBuffer append(Object obj)
每个参数的字符串表示被附加到 StringBuffer 对象。
public class Demo {
public static void main(String[] args) {
StringBuffer str = new StringBuffer("test");
str.append(123);
System.out.println(str);
}
}
插入()
此方法将一个字符串插入另一个字符串。以下是insert()
法的几种形式。
StringBuffer insert(int index, String str)
StringBuffer insert(int index, int num)
StringBuffer insert(int index, Object obj)
这里第一个参数给出了字符串将被插入的位置的索引,第二个参数的字符串表示被插入到 StringBuffer 对象中。
public class Demo {
public static void main(String[] args) {
StringBuffer str = new StringBuffer("test");
str.insert(2, 123);
System.out.println(str);
}
}
反向()
该方法反转一个 StringBuffer 对象中的字符。
public class Demo {
public static void main(String[] args) {
StringBuffer str = new StringBuffer("Hello");
str.reverse();
System.out.println(str);
}
}
奥利
替换()
此方法将字符串从指定的开始索引替换为结束索引。
public class Demo {
public static void main(String[] args) {
StringBuffer str = new StringBuffer("Hello World");
str.replace( 6, 11, "java");
System.out.println(str);
}
}
你好 java
容量()
该方法返回 StringBuffer 对象的当前容量。
public class Demo {
public static void main(String[] args) {
StringBuffer str = new StringBuffer();
System.out.println( str.capacity() );
}
}
Sixteen
注意:空构造器保留 16 个字符的空间。因此输出为 16。
保证能力()
该方法用于保证 StringBuffer 对象的最小容量。
如果 ensureCapacity()方法的参数小于现有容量,则现有容量不会发生变化。
如果 ensureCapacity()方法的参数大于现有容量,则使用以下规则会改变当前容量:新容量=(旧容量*2) + 2 。
public class Demo {
public static void main(String[] args) {
StringBuffer str = new StringBuffer();
System.out.println( str.capacity()); //output: 16 (since empty constructor reserves space for 16 characters)
str.ensureCapacity(30); //greater than the existing capacity
System.out.println( str.capacity()); //output: 34 (by following the rule - (oldcapacity*2) + 2.) i.e (16*2)+2 = 34.
}
}
16 34