Java中的StringBuilder类
StringBuilder 类
StringBuilder
是 Java 中用于创建和操作可变字符串的另一个关键类,它是线程不安全的,但因此在单线程环境中执行效率更高。下面我们将详细介绍其构造方法、常用方法和示例代码。
构造方法
StringBuilder()
: 创建一个空的字符串构建器,默认容量为 16。StringBuilder(int capacity)
: 创建一个具有指定初始容量的字符串构建器。StringBuilder(String str)
: 使用给定的字符串初始化构建器。
常用方法
append(Object obj)
: 向字符串末尾追加任何类型的对象。insert(int index, Object obj)
: 在指定位置插入对象。delete(int start, int end)
: 删除指定范围内的字符。replace(int start, int end, String str)
: 替换指定范围内的子串。reverse()
: 反转字符串中的字符顺序。length()
: 返回字符串长度。capacity()
: 返回当前容量。toString()
: 将构建器内容转换为字符串。
性能考量
StringBuilder
与 StringBuffer
相比,在单线程环境中更快,因为没有同步开销。然而,在多线程中,应避免共享未同步的 StringBuilder
,以免引发数据不一致。
实例代码
public class StringBuilderExample {
public static void main(String[] args) {
// 创建一个初始包含 "Hello" 的 StringBuilder
StringBuilder sb = new StringBuilder("Hello");
// 使用 append 方法追加内容
sb.append(", World!");
// 1. append() 方法
System.out.println("After append(): " + sb.toString()); // 输出: Hello, World!
// 使用 insert 方法在索引 5 处插入 "Java "
sb.insert(5, "Java ");
// 2. insert() 方法
System.out.println("After insert(): " + sb.toString()); // 输出: HelloJava , World!
// 使用 delete 方法删除从索引 0 到 6 的内容
sb.delete(0, 6);
// 3. delete() 方法
System.out.println("After delete(): " + sb.toString()); // 输出: Java , World!
// 使用 replace 方法将索引 5 到 11 替换为 "Python"
sb.replace(5, 11, "Python");
// 4. replace() 方法
System.out.println("After replace(): " + sb.toString()); // 输出: Java Python!
// 使用 reverse 方法反转 StringBuilder 的所有内容
sb.reverse();
// 5. reverse() 方法
System.out.println("After reverse(): " + sb.toString()); // 输出: !nohtPy avaJ
// 获取当前 StringBuilder 的长度
int length = sb.length();
// 6. length() 方法
System.out.println("Length: " + length); // 输出: Length: 11
// 获取当前 StringBuilder 的容量
int capacity = sb.capacity();
// 7. capacity() 方法
System.out.println("Capacity: " + capacity); // 输出: Capacity: 16
// 使用 toString 方法将 StringBuilder 转换为 String
String result = sb.toString();
// 8. toString() 方法
System.out.println("Result as string: " + result); // 输出: !nohtPy avaJ
}
}