StringBuffer可变String不可变的真正原因
String和StringBuffer都是final类,他们生成的对象在堆中都是不可变的,在他们内部都是靠属性char数组实现的,
那为什么StringBuffer可以在对象中追加字符串呢?呵呵,因为String中的char数组是finall的,也就是常量,是不可改变 的,而StringBuffer继承自抽象类AbstractStringBuilder,他的内部实现靠他的父类完 成,AbstractStringBuilder内的char数组是变量,可以用append追加
StringBuffer和StringBuilder都实现了AbstractStringBuilder抽象类,此抽象类实现Appendable接口因此可追加
(在JDK 6.0 API中StringBuilder和Stringbuff写着都继承自Object 而且在他的API中找不到AbstractStringBuilder类)