直接调用 tostring() 方法是最高效、最标准的方式,因其复用内部字符数组副本且无额外开销;应避免 new string(sb.tostring())、sb.substring(0) 等低效写法。

直接调用 toString() 方法即可,这是最高效、最标准的方式。
为什么 toString() 是最优选择
StringBuilder 内部维护一个字符数组(char[]),toString() 会基于当前有效长度(count)创建一个新的 String 对象,并复用该数组的副本——不进行多余拷贝,也不触发额外逻辑。JDK 从早期版本就对此做了优化,是零开销抽象的典型体现。
避免这些低效写法
-
不要用
new String(sb.toString()):多构造一次String,浪费堆内存和 CPU -
不要用
sb.substring(0):虽然结果相同,但底层仍走String构造逻辑,且语义不清 -
不要手动遍历拼接或转为
char[]再构造:绕过优化路径,易出错且性能更差
注意不可变性与后续操作
toString() 返回的是新 String,不影响原 StringBuilder 实例。如果转换后还需继续追加内容,无需重置或新建对象,直接调用 append() 即可:
sb.append("more"); // 原 StringBuilder 仍可复用
小提示:扩容与容量管理
如果构建过程涉及大量追加,提前指定初始容量(如 new StringBuilder(1024))能减少数组扩容次数,间接提升整体效率。但这和转换本身无关,属于构建阶段的优化。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











