Java中怎么实现字符串拼接呢【AI全栈开发】

1. + 运算符

最常用的拼接方式,简洁直观:

java 复制代码
String s = "Hello" + " " + "World";
String name = "Java";
String greeting = "Hello, " + name + "!";

底层原理 :编译器会自动将其优化为 StringBuilder 操作(JDK 9 起改为 StringConcatFactory 动态生成拼接字节码),所以单行拼接性能不是问题。

⚠️ 陷阱 :循环中用 + 拼接,每次循环都会创建新的 StringBuilder,产生大量临时对象:

java 复制代码
// 反例 ❌ --- 循环中用 +
String result = "";
for (int i = 0; i < 10000; i++) {
    result += i;  // 每次循环都 new StringBuilder,极低效
}

// 正例 ✅ --- 循环中用 StringBuilder
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++) {
    sb.append(i);
}
String result = sb.toString();

2. StringBuilder / StringBuffer

类 线程安全 性能 适用场景
StringBuilder 否 快 单线程,绝大多数场景
StringBuffer 是 稍慢 多线程需要同步时
java 复制代码
StringBuilder sb = new StringBuilder();
sb.append("Hello").append(" ").append("World");
String result = sb.toString();

可以预分配容量以减少扩容开销:

java 复制代码
StringBuilder sb = new StringBuilder(1024); // 预估大小,避免频繁扩容

3. String.concat()

java 复制代码
String s = "Hello".concat(" ").concat("World");
  • 内部直接创建 char[] 并复制,比 + 在少量拼接时更高效
  • 适合确定只有两个字符串拼接的场景

4. String.join()

JDK 8 引入,适合用分隔符拼接多个字符串:

java 复制代码
String result = String.join(", ", "Java", "Python", "Go");
// → "Java, Python, Go"

// 拼接集合
List<String> list = List.of("a", "b", "c");
String joined = String.join("-", list);  // "a-b-c"

5. String.format()

适合需要格式化输出的场景:

java 复制代码
String s = String.format("姓名:%s,年龄:%d", "张三", 25);
// → "姓名:张三,年龄:25"

总结

方式 适用场景 性能
+ 单行少量拼接 ✅ 编译器优化后良好
StringBuilder 循环或大量拼接 ✅ 最佳
StringBuffer 多线程大量拼接 ✅ 略慢于 Builder
concat() 两个字符串拼接 ✅ 良好
String.join() 分隔符拼接 ✅ 良好
String.format() 格式化拼接 ⚠️ 较慢,胜在可读性

核心原则 :单行拼接用 +,频繁拼接字符串时,优先使用 StringBuilder(非线程安全)或 StringBuffer(线程安全),避免产生大量中间 String 对象。

相关推荐
豆角焖肉13 分钟前
SpringBoot+JWT 实现前后端分离登录鉴权
java·开发语言·spring boot·jwt·前后端分离·登录认证
Wang's Blog22 分钟前
Java 项目部署之 Docker工具快速入门: 自定义镜像的分层结构与写时复制
java·开发语言·docker
别动我齐刘海10 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
code2cat11 小时前
Java进阶篇之AtomicLongFieldUpdater:把累计额度留在对象字段中
java·cas·并发编程
WeiXin_DZbishe11 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
泡茶喝茶写代码11 小时前
A股量化数据工程:从 REST 接口到策略信号(第 18 篇):放量缩量异动扫描
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
wewowilling11 小时前
认识微服务
java·运维·微服务·springcloud
代码什么用12 小时前
Java Web 7-10
java·servlet
蜗牛互联网13 小时前
GPT-6 与 Intelligent UI:从回答到可审计操作的产品迁移
java·人工智能·后端