在 Java 中,String 拼接的性能取决于使用场景和拼接方式。下面按「性能从高到低 + 适用场景」给你一个清晰总结。
StringBuilder(单线程)最常用、性能最好
StringBuilder sb = new StringBuilder();
sb.append("a");
sb.append("b");
sb.append("c");
String result = sb.toString();
✅ 优点:
✅ 适用:
StringBuffer(多线程)StringBuffer sb = new StringBuffer();
sb.append("a").append("b");
✅ 线程安全(方法加 synchronized)
❌ 比 StringBuilder 稍慢
✅ 适用:
+(常量拼接)String s = "a" + "b" + "c";
✅ 编译器直接优化成:
String s = "abc";
⚠️ 仅限编译期常量
+(变量少)String name = "Tom";
String s = "Hello " + name;
✅ Java 编译器会优化为 StringBuilder
❌ 不适合循环
+String s = "";
for (int i = 0; i < 10000; i++) {
s += i; // ❌ 每次都 new StringBuilder + String
}
❌ 会生成大量中间对象 ❌ 时间复杂度 O(n²)
StringJoinerStringJoiner sj = new StringJoiner(",");
sj.add("a").add("b").add("c");
String result = sj.toString();
✅ 适合:
String.joinString result = String.join(",", list);
| 方式 | 性能 | 场景 |
|---|---|---|
编译期 + |
⭐⭐⭐⭐⭐ | 常量 |
StringBuilder |
⭐⭐⭐⭐⭐ | 循环/大量 |
StringBuffer |
⭐⭐⭐⭐ | 多线程 |
少量 + |
⭐⭐⭐⭐ | 简单拼接 |
循环 + |
❌ | 禁止 |
如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。