Java StringBuffer 和 StringBuilder 类
一、概述
- StringBuffer 和 StringBuilder 都是用于处理可变字符串的类。
- 它们提供了比 String 类更高效的字符串操作,尤其是在需要频繁修改字符串内容的情况下。
- StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的。
- 在单线程环境下,StringBuilder 的性能优于 StringBuffer。
二、主要区别
特性 |
StringBuffer |
StringBuilder |
线程安全 |
是 |
否 |
性能 |
较低 |
较高 |
使用场景 |
多线程环境 |
单线程环境 |
三、常用方法
- 构造方法:
StringBuffer()
: 构造一个空的字符串缓冲区,初始容量为 16 个字符。
StringBuffer(int capacity)
: 构造一个指定容量的字符串缓冲区。
StringBuffer(String str)
: 构造一个包含指定字符串的字符串缓冲区。
- 追加方法:
append(数据类型)
: 将指定数据类型的字符串表示形式追加到字符串缓冲区。
- 插入方法:
insert(int offset, 数据类型)
: 将指定数据类型的字符串表示形式插入到字符串缓冲区的指定位置。
- 删除方法:
delete(int start, int end)
: 删除字符串缓冲区中从 start 开始到 end-1 结束的子字符串。
deleteCharAt(int index)
: 删除字符串缓冲区中指定位置的字符。
- 替换方法:
replace(int start, int end, String str)
: 使用指定字符串替换字符串缓冲区中从 start 开始到 end-1 结束的子字符串。
- 反转方法:
reverse()
: 将字符串缓冲区中的字符序列反转。
- 其他方法:
length()
: 返回字符串缓冲区的长度。
capacity()
: 返回字符串缓冲区的当前容量。
charAt(int index)
: 返回字符串缓冲区中指定位置的字符。
setCharAt(int index, char ch)
: 将字符串缓冲区中指定位置的字符设置为 ch。
substring(int start)
: 返回字符串缓冲区中从 start 开始到末尾的子字符串。
substring(int start, int end)
: 返回字符串缓冲区中从 start 开始到 end-1 结束的子字符串。
toString()
: 返回字符串缓冲区的字符串表示形式。
四、案例代码
public class StringBufferAndBuilderDemo {
public static void main(String[] args) {
StringBuffer stringBuffer = new StringBuffer("Hello");
StringBuilder stringBuilder = new StringBuilder("World");
stringBuffer.append(" ");
stringBuffer.append("Java");
stringBuilder.append("!");
System.out.println("StringBuffer: " + stringBuffer);
System.out.println("StringBuilder: " + stringBuilder);
stringBuffer.insert(5, ",");
stringBuilder.insert(0, "Hello ");
System.out.println("StringBuffer: " + stringBuffer);
System.out.println("StringBuilder: " + stringBuilder);
stringBuffer.delete(5, 6);
stringBuilder.deleteCharAt(5);
System.out.println("StringBuffer: " + stringBuffer);
System.out.println("StringBuilder: " + stringBuilder);
stringBuffer.replace(6, 10, "Python");
stringBuilder.r