首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

String为何是不可变的

2012-10-28 
String为什么是不可变的StringBuffer可变String不可变的真正原因?String和StringBuffer都是final类,他们生

String为什么是不可变的

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类)

热点排行