stringbuilder非线程安全但性能最高,适用于单线程频繁字符串操作;stringbuffer线程安全但性能较低,仅在多线程场景下使用;string不可变,每次修改都创建新对象。

不用死记硬背,关键在理解逻辑和使用场景。StringBuilder 是为高效拼接、修改字符串设计的,它的 API 都围绕“可变字符序列”这个核心展开。掌握几个高频方法 + 对比 String 就够应付绝大多数面试题。
重点记清这 4 个核心方法
它们覆盖了 80% 的使用和考题:
-
append():追加内容(支持 String、int、char、boolean 等多种类型),是拼接操作的主力。比如
sb.append("a").append(1).append(true)链式调用很常见。 - toString():把 StringBuilder 转成不可变的 String。注意它不改变原对象,只是生成副本 —— 这是最后一步输出的必经操作。
- delete(int start, int end):删除 [start, end) 区间字符(左闭右开)。容易错记成 inclusive,面试时画个简图就能确认。
- reverse():反转整个序列。简洁高效,常考“判断回文”或“字符串翻转”类题目,比用 char[] 手动交换更直观。
对比 String 记住为什么用它
面试官爱问“为什么不用 + 拼接?”——答案就藏在底层机制里:
- String 每次“+”都会新建对象,n 次拼接产生 n-1 个中间废弃对象;
- StringBuilder 底层是可扩容的 char[](JDK9 后是 byte[]),append 只是往数组末尾填数据,没有频繁创建对象的开销;
- 所以只要涉及循环内拼接、多步修改(如删/插/替换),优先选 StringBuilder。
常考陷阱题怎么应对
不是背答案,而是抓住两个判断依据:
-
== 和 equals 的区别:StringBuilder 没重写 equals(),
new StringBuilder("a") == new StringBuilder("a")是 false,.equals()也是 false(默认继承 Object 的地址比较)。想比内容?得先toString()再比。 - 线程安全问题:StringBuilder 是线程不安全的,但面试很少考 synchronized 细节;重点记住它和 StringBuffer 的区别:后者方法加了 synchronized,性能略低,适用于多线程场景;前者单线程更快,日常开发默认选它。
- 构造与容量:无参构造默认容量 16;带 int 参数的构造指定初始容量,避免频繁扩容(扩容是 2 倍 + 2,有开销)。如果已知最终长度,预设容量是优化点。
动手写两行代码比背十遍管用
比如实现“去掉字符串首尾空格并反转单词顺序”,手敲一遍:
String s = " hello world ";StringBuilder sb = new StringBuilder(s.trim()).reverse();
String result = sb.toString(); // "dlrow olleh"
过程中自然就记住了 trim() 是 String 的、reverse() 是 StringBuilder 的、toString() 是出口。真实场景驱动记忆,最牢靠。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











