String使用final关键字修饰(char或byte)数组,所以String是不可变的;
StringBuffer 和 StringBuilder 都继承自AbstractStringBuilder父类,在AbstractStringBuilder中使用char[]value字符数组保存字符串,但是没有用fianal关键字修饰,所以它两是可变的。
每次对String类型进行修改时,都会生成一个新的String对象,性能和内存开销都比较大
StringBuilder和StringBuffer的操作是直接改变字符串对象本身,而不是生成新的对象,所以开销小
StringBuilder类中的方法没有synchronized关键字,所以它的方法都是”线程“不安全,但是性能好
StringBuffer类中的方法使用synchronized关键字,所以它的线程都是安全的,但是性能差