tostring()用于将stringbuilder内容转为不可变string对象;它创建新string实例,不改变原stringbuilder状态,且与原对象数据完全独立。

在 Java 中,StringBuilder 是一个可变的字符序列容器,常用于高效拼接字符串;而 toString() 方法正是将其当前内容转为标准的、不可变的 String 对象的标准方式。
为什么需要 toString()?
StringBuilder 本身不是 String,它内部用 char 数组动态维护内容,支持增删改,但不能直接当作字符串参与比较、传参或持久化。调用 toString() 会创建一个**新分配的、内容相同且不可修改的 String 实例**,这是安全传递和使用的前提。
基本用法:一步转换
只需在完成所有追加、插入、删除等操作后,调用 toString() 即可:
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World");
String result = sb.toString(); // → "Hello World"
注意:toString() 不改变原 StringBuilder 状态,也不清空它;后续仍可继续使用 sb。
常见注意事项
-
不要重复调用 toString() 获取“新字符串”来避免修改:因为
String本就不可变,每次toString()都返回新对象,无需担心被意外修改 - 避免在循环中反复 toString() 后又继续追加:这会造成冗余对象,影响性能;应先构建完再转一次
-
toString() 返回的 String 与 StringBuilder 内容共享底层数组?:否。JDK 9+ 中
String使用 byte[] 存储,且toString()会复制数据,完全独立
对比 StringBuffer 的 toString()
StringBuffer 也提供 toString(),行为一致——都生成新的不可变 String。区别仅在于线程安全性(StringBuffer 是同步的),日常单线程场景优先用 StringBuilder。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











