String 是被 final 修饰的,长度是不可变的,就算调用 String 的 concat 方法,那也是把字符串拼接起来并重新创建一个对象,把拼接后的 String 的值赋给新创建的对象,
String a="abc";
String b="abc";
字符串内容是不能改变的,才有了字符串常量池的概念
执行a+="d"
这时候会新建一个字符串"abcd"给a字符串
b还是之前的内容"abc"
SteingBuffer:
StringBuffer三个特点
1.长度可变
2.可以字节操作多个数据类型
3.最终通过toString转变成字符串
与之对应的有StringBuilder 两个功能一模一样
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则使用 StringBuffer 类。