一、String +=
1.加号拼接,以a=“a”; str = “a”+"b"为例,将字节码反编译,得到以下效果代码:
String a = “a”;
StringBuilder sb = new StringBuilder();
sb.append(a).append(“b”);
String str = sb.toString()

2.可以看到,每次拼接都会创建一个StringBuilder。所以说这只是语法糖,不能算符号重载,稍加不注意就行影响效率,因为我们日常编写不可能用+号拼接很长的串,中间还有涉及业务逻辑。

二、String.concat(String str) 方法
concat方法是String给我们提供的拼接字符串的方法。

String jeremy = "Jeremy";
String tsai = "Tsai";
String jeremytsai = jeremy.concat(tsai);

将指定的字符串连接到该字符串的末尾。如果参数字符串的长度为0,则返回此String对象。
否则,返回一个String对象,该对象表示一个字符序列,该字符序列是此String对象表示的字符序列与参数字符串表示的字符序列的串联。

三、StringBuilder 拼接字符串
String jeremy = "jeremy";
String tsai = "tsai";
String jeremytsai = new StringBuilder().append(jeremy).append(tsai).toString();

四、String 字符串拼接效率对比
String在Java中是不可变对象,因此每次拼接都是生成新的String对象,为了解决频繁的内存开辟消耗资源,才有了StringBuilder类。在+拼接过程中,JDK默认优化成为StringBuilder以提高运行效率。