黑马程序员技术交流社区

标题: 关于append的一个小问题 [打印本页]

作者: 血影-追梦    时间: 2013-11-6 23:38
标题: 关于append的一个小问题
append的容量16,34,70,142...............想问一下当容量不足时,容量是怎么扩充的。
如:原来容量16就够了,然后再添加内容,其容量不足,假如34就够了。它的容量是怎么扩充的。其地址值貌似是不变的吧,但是内存中储存数据的区域是一块一块的,没有别占用的区域也不一定是连在一起的,当其容量不够时怎么扩充,是不是把另一块区域也分给它,然后用指针在指向原来的地址,这样原来的地址值就不变了。。。。。。不知道大家能不能看懂,帮小弟解决一下疑惑
作者: ヅ飞飞    时间: 2013-11-7 13:52
你说的append是什么?StirngBuffer或StirngBuilder的append方法么?
StringBuffer和StirngBuilder的内部操作的是字符数组,数组被初始化后其长度就确定了且不能被改变,StirngBuffer和StringBuilder的初始化分配的是长度为16的字符数组,调用append方法添加字符或字符串当超过此长度会开辟一个更长的数组然后将原来的数据copy到里面再继续添加,原来的引用(指针)指向新的数组,原来的数组会被垃圾回收。
作者: 血影-追梦    时间: 2013-11-7 16:33
ヅ飞飞 发表于 2013-11-7 13:52
你说的append是什么?StirngBuffer或StirngBuilder的append方法么?
StringBuffer和StirngBuilder的内部操 ...

也就是地址值发生改变了?
作者: ヅ飞飞    时间: 2013-11-7 18:31
血影-追梦 发表于 2013-11-7 16:33
也就是地址值发生改变了?

是的,变量名不改变改变的是地址值。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2