详解java的StringBuilder类

在 Java 中,StringBuilder 是一个非常常用且高效的类,用于操作可变字符串(mutable string)。与 String 类不同的是,String 是不可变的(immutable),每次对字符串进行拼接、修改等操作时都会创建一个新的对象,而 StringBuilder 则可以在原有对象上进行修改,从而提高性能。

✅ 什么是 new StringBuilder()

StringBuilder sb = new StringBuilder();

这行代码创建了一个空的 StringBuilder 实例,你可以使用它来构建或修改字符串内容,而不会频繁地创建新的字符串对象。

常见用途

1. 字符串拼接(高效)

当你需要在一个循环中拼接大量字符串时,推荐使用 StringBuilder 而不是 ++= 操作符:

StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100; i++) {
    sb.append(i);
}
String result = sb.toString(); // 转换为 String

⚠️ 如果用 String 来做同样的事,会产生 100 个中间字符串对象,效率很低。

2. 字符串反转

StringBuilder sb = new StringBuilder("hello");
System.out.println(sb.reverse()); // 输出: olleh

3. 插入和删除字符

StringBuilder sb = new StringBuilder("hello");
sb.insert(2, "XYZ");  // 在索引 2 插入 "XYZ" → "heXYZllo"
sb.delete(2, 5);     // 删除索引 [2,5) 的字符 → "helLO"

4. 替换子串

StringBuilder sb = new StringBuilder("hello world");
sb.replace(6, 11, "Java");  // 替换 "world" → "hello Java"

5. 设置长度和字符

StringBuilder sb = new StringBuilder("abcdefg");
sb.setLength(3); // 截断为前三个字符 → "abc"

sb.setCharAt(1, 'X'); // 修改字符 → "aXc"

构造方法(构造器)

  • new StringBuilder()
    创建默认初始容量为 16 的空字符串构建器。

  • new StringBuilder(int capacity)
    创建指定初始容量的空字符串构建器。

  • new StringBuilder(String str)
    创建以 str 初始化的字符串构建器。

示例:

StringBuilder sb1 = new StringBuilder();          // 初始容量 16
StringBuilder sb2 = new StringBuilder(32);        // 初始容量 32
StringBuilder sb3 = new StringBuilder("hello");   // 初始内容是 "hello"

StringBuffer 的区别

特性 StringBuilder StringBuffer
线程安全 ❌ 不是线程安全的 ✅ 是线程安全的
性能 更快 相对较慢
使用场景 单线程下操作字符串 多线程共享访问字符串

所以:单线程推荐使用 StringBuilder,多线程推荐使用 StringBuffer

示例:判断回文字符串(使用 StringBuilder)

public boolean isPalindrome(String str) {
    return str.equals(new StringBuilder(str).reverse().toString());
}

总结

功能 是否支持
可变字符串操作
高效字符串拼接
字符插入/删除/替换
字符串反转
多线程安全
可指定初始容量

你可能感兴趣的:(Java,知识必知必会,java,开发语言)