最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
一文搞懂Java字符串拼接与常用方法 AI全栈开发
时间:2026-06-14 08:53:47 编辑:袖梨 来源:一聚教程网
1. + 运算符
最常用的拼接方式,简洁直观:

String s = "Hello" + " " + "World";
String name = "Java";
String greeting = "Hello, " + name + "!";
底层原理:编译器会自动将其优化为 StringBuilder 操作(JDK 9 起改为 StringConcatFactory 动态生成拼接字节码),所以单行拼接性能不是问题。
️ 陷阱:循环中用 + 拼接,每次循环都会创建新的 StringBuilder,产生大量临时对象:
// 反例 — 循环中用 +
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 | 是 | 稍慢 | 多线程需要同步时 |
StringBuilder sb = new StringBuilder();
sb.append("Hello").append(" ").append("World");
String result = sb.toString();
可以预分配容量以减少扩容开销:
StringBuilder sb = new StringBuilder(1024); // 预估大小,避免频繁扩容
3. String.concat()
String s = "Hello".concat(" ").concat("World");
- 内部直接创建
char[]并复制,比+在少量拼接时更高效 - 适合确定只有两个字符串拼接的场景
4. String.join()
JDK 8 引入,适合用分隔符拼接多个字符串:
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()
适合需要格式化输出的场景:
String s = String.format("姓名:%s,年龄:%d", "张三", 25);
// → "姓名:张三,年龄:25"
总结
| 方式 | 适用场景 | 性能 |
|---|---|---|
+ | 单行少量拼接 | 编译器优化后良好 |
StringBuilder | 循环或大量拼接 | 最佳 |
StringBuffer | 多线程大量拼接 | 略慢于 Builder |
concat() | 两个字符串拼接 | 良好 |
String.join() | 分隔符拼接 | 良好 |
String.format() | 格式化拼接 | ️ 较慢,胜在可读性 |
相关文章
- 地下城堡2黑暗裂隙38层红龙怎么过 黑暗裂隙38层新手通关攻略详解 06-14
- 地下城堡2强者血液功能详解 强者血液有什么用 06-14
- 废土之上重建家园:《地下城堡2》首章解析 06-14
- 地下城堡2刺客怎么刷图 刺客玩法技巧分享 06-14
- 龙之谷:要点卡与否的讨论与游戏内容解读 06-14
- 地下城堡2三星英雄如何选择:三星英雄搭配阵容分享 06-14