字符修改
String是不可变字符序列(修改String类时,会新增String对象);StringBuffer和StringBuilder进行修改时不会产生新的对象
UML图解
String 使用一个final修饰的char数组value维护,value被final修饰不可改变,这也就是String为什么是不可变字符序列
StringBuffer和StringBuilder都继承了AbstractStringBuilder,他们存储字符的字符数组来自父类的value,这个value并不是final类,可以被修改;对StringBuffer和StringBuilder进行修改可以使用append的方法,在原有的字符序列后面加上新增的字符值(父类AbstractStringBuilder中的方法可以看出这样的操作);所以也就解释了为什么StringBuffer和StringBuilder为什么是可变字符序列
StringBuilder append(String str) 方法源码分析