三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

一文搞懂 Java 字符串拼接与常用方法【AI 全栈开发】

一文搞懂 Java 字符串拼接与常用方法【AI 全栈开发】

1.+运算符

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

Strings="Hello"+" "+"World";Stringname="Java";Stringgreeting="Hello, "+name+"!";

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

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

// 反例 ❌ — 循环中用 +Stringresult="";for(inti=0;i<10000;i++){result+=i;// 每次循环都 new StringBuilder,极低效}// 正例 ✅ — 循环中用 StringBuilderStringBuildersb=newStringBuilder();for(inti=0;i<10000;i++){sb.append(i);}Stringresult=sb.toString();

2. StringBuilder / StringBuffer

类线程安全性能适用场景
StringBuilder否快单线程,绝大多数场景
StringBuffer是稍慢多线程需要同步时
StringBuildersb=newStringBuilder();sb.append("Hello").append(" ").append("World");Stringresult=sb.toString();

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

StringBuildersb=newStringBuilder(1024);// 预估大小,避免频繁扩容

3. String.concat()

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

4. String.join()

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

Stringresult=String.join(", ","Java","Python","Go");// → "Java, Python, Go"// 拼接集合List<String>list=List.of("a","b","c");Stringjoined=String.join("-",list);// "a-b-c"

5. String.format()

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

Strings=String.format("姓名:%s,年龄:%d","张三",25);// → "姓名:张三,年龄:25"

总结

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

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

← 返回列表