StringBuffer 和 StringBuilder
StringBuffer 和 StringBuilder
StringBuffer:
StringBuffer
是线程安全的。这意味着它的方法是同步的,可以在多线程环境中使用而不会出现问题。- 由于同步,
StringBuffer
的性能比StringBuilder
稍低,特别是在单线程环境下。
StringBuilder
StringBuilder
是非线程安全的。它的方法不是同步的,因此在单线程环境中性能更好。- 如果在多线程环境中使用
StringBuilder
,且多个线程可能会同时修改它,那么需要手动同步。
常用方法
append(X x)
: 将给定的数据追加到字符串末尾。insert(int offset, X x)
: 在指定位置插入数据。delete(int start, int end)
: 删除从start
到end - 1
的字符。deleteCharAt(int index)
: 删除指定索引处的字符。replace(int start, int end, String str)
: 用新字符串替换从start
到end - 1
的字符。reverse()
: 反转字符串。substring(int start)
: 返回从start
开始到末尾的子字符串。substring(int start, int end)
: 返回从start
到end - 1
的子字符串。capacity()
: 返回当前容量。ensureCapacity(int minimumCapacity)
: 确保容量至少是指定的最小值。setLength(int newLength)
: 设置字符串的新长度。toString()
: 返回字符串的当前表示形式。
以下是 StringBuilder
和 StringBuffer
的简单使用示例:
// 使用StringBuilder
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" World");
System.out.println(sb.toString()); // 输出 "Hello World"
// 使用StringBuffer
StringBuffer sbf = new StringBuffer();
sbf.append("Hello");
sbf.append(" World");
System.out.println(sbf.toString()); // 输出 "Hello World"
在这两个示例中,StringBuilder
和 StringBuffer
的使用方法非常相似。