一、背景

String 是 Java 中最常用的类型,但经常有人搞混它与 StringBuilderStringBuffer 的区别。 理解它们的差异,有助于编写高性能的字符串处理代码。


二、核心区别对比

特性 String StringBuilder StringBuffer
可变性 ❌ 不可变 ✅ 可变 ✅ 可变
线程安全 ✅ 安全(不可变) ❌ 不安全 ✅ 安全(加 synchronized)
性能 比 StringBuilder 慢一点
适用场景 字符串常量 单线程拼接 多线程拼接

三、示例对比

String s = "A";
s += "B";
s += "C";
System.out.println(s); // ABC

每次拼接都会创建新的 String 对象,浪费内存。

优化方式👇

StringBuilder sb = new StringBuilder();
sb.append("A").append("B").append("C");
System.out.println(sb.toString()); // ABC

四、性能差异(示意)

场景 String 拼接 StringBuilder
拼接 1 次
拼接 1000 次 非常慢 非常快

✅ 建议:
日常拼接用 StringBuilder
多线程中用 StringBuffer
字符串常量直接用 String


五、小结

  • String:不可变、安全、慢
  • StringBuilder:可变、快、单线程
  • StringBuffer:可变、线程安全
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐