String使用final关键字修饰(char或byte)数组,所以String是不可变的;
由于每次对String类型进行操作时,都会生成一个新的String对象,所以性能和内存开销比较大;
StringBuilder与StringBuffer都继承自AbstractStringBuilder父类,使用的char[] value字符数组保存字符串,但是没有用final关键字修饰所以StringBuilder与StringBuffer都是可变的;
因为StringBuffer和StringBuilder操作时是直接改变字符串对象本身,而不是生成新的对象,所以性能开销比较小;