温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

StringBuilder为何不用加号

发布时间:2026-10-26 15:50:08 来源:亿速云 阅读:93 作者:小樊 栏目:编程语言

在 Java 里,StringBuilder 之所以“不建议用加号(+)”,核心原因是:用 + 就失去了 StringBuilder 存在的意义,甚至比直接用 String 还别扭。下面分点说清楚。


1. + 在字符串里是“新建对象”,不是“追加”

Java 中:

String s = "a" + "b";

编译器实际上会:

  • 创建 StringBuilder
  • append("a")
  • append("b")
  • toString() 生成新 String

也就是说:

+ 每次都会产生新对象


2. StringBuilder 的设计目的

StringBuilder 的作用是:

在已有对象上连续修改内容,避免频繁创建 String

例如:

StringBuilder sb = new StringBuilder();
sb.append("a");
sb.append("b");
sb.append("c");

✅ 始终只有 一个 StringBuilder 对象


3. 如果你在 StringBuilder 里用 +

StringBuilder sb = new StringBuilder();
sb.append("a" + "b");

这里发生了什么?

  1. "a" + "b" → 先生成一个 新 String
  2. 再把这个 String 追加进 StringBuilder

❌ 多创建了无意义的 String 对象
❌ 没有利用 StringBuilder 的优势


4. 循环里差别最明显

❌ 错误示范:

String s = "";
for (int i = 0; i < 10000; i++) {
    s += i; // 每次都新建 String
}

✅ 正确示范:

StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++) {
    sb.append(i);
}

性能差距可能是 几十倍甚至上百倍


5. 什么情况下可以用 +?

✅ 少量、固定字符串拼接(编译期可优化)

String s = "name: " + name;

编译器会优化,问题不大。

❌ 循环中、大量拼接 → 必须用 StringBuilder


一句话总结

StringBuilder 是为了“避免 + 产生的临时对象”而存在的,用 + 就等于绕回原点。

如果你愿意,我也可以画一个 内存变化对比图,或者讲 StringBuilder vs StringBuffer vs StringJoiner 的区别。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手