String、StringBuilder、StringBuffer 区别(面试题)

对,它确实就是用来拼字符串 的,但关键在于:它不是"多拼几个字符",而是"少创建很多对象"。

最典型场景:循环里拼字符串

java 复制代码
// 不推荐
String result = "";
for (int i = 0; i < 10000; i++) {
    result += "data" + i; // 每次循环都会产生新对象
}

// 推荐
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++) {
    sb.append("data").append(i);
}
String result = sb.toString();

String += 在循环里会不断创建临时对象,数据量大时 GC 压力会明显上升;StringBuilder 始终操作同一个可变数组,只在最后生成一次 String。

其他常见场景

  • 动态组装 SQL / JSON / XML
  • 批量拼接日志、报表内容
  • 解析文本时逐步拼接
  • 需要 insert、delete、reverse 这类原地修改操作

什么时候不用它

如果只是简单拼接一次:

java 复制代码
String msg = "用户 " + name + " 已登录";

这种用 + 就行,编译器会优化,可读性也更好。

所以可以记成:少量拼接用 +;循环、动态组装、大数据量拼接用 StringBuilder;多线程共享拼接才考虑 StringBuffer。


需要我帮你梳理一下 StringBuilder 的常见操作方法,方便应对面试中的手写代码题吗?

相关推荐
斯维赤1 小时前
微信步数的10点定时推送,看似简单,实则暗藏玄机
java·后端
Linux_cy1 小时前
服务器管理方案选型:面板 / SSH 客户端 / 桌面型客户端怎么选
java·linux·运维·服务器·ssh·可视化·gmssh
可乐_不渴2 小时前
【Linux】 进程虚拟地址空间
java·linux·javascript
SimonKing2 小时前
号外号外,Stream-Nexus推送项目支持集群部署了
java·后端·程序员
vipxieliang2 小时前
ValidX vs 正则表达式:可读性与维护性对比
java·spring boot
337802 小时前
5分钟搞懂登录认证和授权框架Spring Security
java·spring boot
vipxieliang2 小时前
Spring Security 6.x 实战:认证、授权与 JWT 集成
java·spring boot
world78112262 小时前
【C++】set 和 map
java·前端·c++·set·map
学长毕设2 小时前
基于SpringBoot的社区体育馆预约系统的设计与实现
java·spring boot·后端