本帖最后由 王震阳 于 2012-11-20 22:30 编辑
我来回答你吧,StringBuffer 初始化时会有一个默认大小的容量,它的底层数据结构是一个数组,当这个数组容量已经无法容纳下你的数据时,他会在创建一个容量为当前容量200%的容器,将这个新的容器替换掉那个老的容器,因此他的capacity()值时可以变化,当然在里面的值没有超过默认容量时,值时不变的。
给你代码和图片演示:
希望对你有帮助。- public class A
- {
- public static void main(String[] args)
- {
- StringBuffer sb=new StringBuffer();
- int i=sb.capacity();
- while(true)
- {
- sb.append('2');
- if(i<sb.capacity())
- {
- i=sb.capacity();
- System.out.println("当前capacity:"+sb.capacity());
- }
-
- }
-
-
- }
- }
复制代码 |
|