stringbuilder 的 append 方法返回 this 实现链式调用,支持流式 api 风格,提升拼接代码的简洁性、可读性与性能;tostring() 等非 stringbuilder 返回方法会中断链式。

Java 中 StringBuilder 的 append 方法返回的是 this(即当前 StringBuilder 实例),这使得它可以支持链式调用,从而避免重复写变量名、减少中间变量、让拼接逻辑更紧凑清晰。
链式调用的核心机制
StringBuilder 的每个 append 方法(如 append(String)、append(int)、append(char) 等)都声明为返回 StringBuilder 类型,且实际返回 this。这种设计符合“流式 API”(Fluent Interface)风格,天然适配链式写法。
- 不是所有方法都支持链式——只有返回
StringBuilder的方法才可以继续调用后续append -
toString()、length()、delete()等方法不返回StringBuilder,会中断链式,需放在最后或单独调用 - 链式调用不创建新对象,全程在原实例上修改,高效且内存友好
对比:传统写法 vs 链式写法
拼接用户信息场景:
// 传统写法(冗长、重复变量名)
StringBuilder sb = new StringBuilder();
sb.append("Name: ").append(name);
sb.append(", Age: ").append(age);
sb.append(", City: ").append(city);
String result = sb.toString();
等价的链式写法:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
// 链式写法(一行完成,语义连贯)
String result = new StringBuilder()
.append("Name: ").append(name)
.append(", Age: ").append(age)
.append(", City: ").append(city)
.toString();
优势明显:无需声明中间变量、缩进自然、逻辑线性、易读易改。
实用技巧与注意事项
链式调用不是“越长越好”,关键在于可读性和维护性:
- 适合中等长度拼接(如日志模板、SQL 片段、JSON 字段组装),超过 5–6 次
append建议换行对齐,提升可读性 - 避免在链中混入条件逻辑(如
if),可先计算好值再 append;必要时用三元运算符保持链式:.append(active ? "ON" : "OFF") - 不要在链式中重复使用同一个 StringBuilder 实例做多处拼接——链式是“一次性构建”,复用需重置(
setLength(0))或新建 - 若需多次复用相同模板,建议封装为方法,内部用链式构造,对外隐藏细节
延伸:和 String.format / + 拼接的区别
链式 append 不依赖字符串不可变性,也不触发频繁的临时对象分配:
- 相比
+(尤其在循环或复杂表达式中),它不隐式创建多个StringBuilder,性能更可控 - 相比
String.format,它无格式解析开销,适合纯拼接;但不提供类型安全占位符,需手动处理 null 或类型转换 - 混合使用常见:先用
append拼骨架,再用insert/replace局部调整,仍保持链式潜力
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










