A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

血影-追梦

中级黑马

  • 黑马币:9

  • 帖子:33

  • 精华:0

© 血影-追梦 中级黑马   /  2013-11-6 23:38  /  724 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

append的容量16,34,70,142...............想问一下当容量不足时,容量是怎么扩充的。
如:原来容量16就够了,然后再添加内容,其容量不足,假如34就够了。它的容量是怎么扩充的。其地址值貌似是不变的吧,但是内存中储存数据的区域是一块一块的,没有别占用的区域也不一定是连在一起的,当其容量不够时怎么扩充,是不是把另一块区域也分给它,然后用指针在指向原来的地址,这样原来的地址值就不变了。。。。。。不知道大家能不能看懂,帮小弟解决一下疑惑

评分

参与人数 1技术分 +1 收起 理由
To + 1 鼓励

查看全部评分

3 个回复

倒序浏览
你说的append是什么?StirngBuffer或StirngBuilder的append方法么?
StringBuffer和StirngBuilder的内部操作的是字符数组,数组被初始化后其长度就确定了且不能被改变,StirngBuffer和StringBuilder的初始化分配的是长度为16的字符数组,调用append方法添加字符或字符串当超过此长度会开辟一个更长的数组然后将原来的数据copy到里面再继续添加,原来的引用(指针)指向新的数组,原来的数组会被垃圾回收。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
ヅ飞飞 发表于 2013-11-7 13:52
你说的append是什么?StirngBuffer或StirngBuilder的append方法么?
StringBuffer和StirngBuilder的内部操 ...

也就是地址值发生改变了?
回复 使用道具 举报
血影-追梦 发表于 2013-11-7 16:33
也就是地址值发生改变了?

是的,变量名不改变改变的是地址值。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马