StringBuffer可变String不可变的真正原因

时间:2022-06-09 03:59:44

String和StringBuffer都是finall类,他们生成的对象在堆中都是不可变的,在他们内部都是靠属性char数组实现的,

那为什么StringBuffer可以在对象中追加字符串呢?呵呵,因为String中的char数组是finall的,也就是常量,是不可改变的,而StringBuffer继承自抽象类AbstractStringBuilder,他的内部实现靠他的父类完成,AbstractStringBuilder内的char数组是变量,可以用append追加

 

StringBuffer和StringBuilder都实现了AbstractStringBuilder抽象类,此抽象类实现Appendable接口因此可追加

(在JDK 6.0 API中StringBuilder和Stringbuff写着都继承自Object 而且在他的API中找不到AbstractStringBuilder类)