看一下ensureCapacity!
class stringBufferDemo{
public static void main(String[] args)
{
StringBuffer sb1 = new StringBuffer("ding jixiang");
sb1.ensureCapacity(48);//如果去了这一句为什么答案是(16+字符串的长度 ),那个16留在那干吗?
int n = sb1.capacity();
System.out.println(n);
}
}
答案怎么是58??
[此贴子已经被作者于2006-8-17 15:02:58编辑过]
搜索更多相关的解决方案:
字符串
----------------解决方案--------------------------------------------------------
怎么没有人帮我看一下呀?
----------------解决方案--------------------------------------------------------
StringBuffer的缺省行为:
StringBuffer在内部维护一个字符数组,当你使用缺省的构造函数来创建StringBuffer对象的时候,因为没有设置初始化字符长度,StringBuffer的容量被初始化为16个字符,也就是说缺省容量就是16个字符。当StringBuffer达到最大容量的时候,它会将自身容量增加到当前的2倍再加2,也就是(2*旧值+2)。
如果你使用缺省值,初始化之后接着往里面追加字符,在你追加到第16个字符的时候它会将容量增加到34(2*16+2),当追加到34个字符的时候就会将容量增加到70(2*34+2)。
----------------解决方案--------------------------------------------------------
多谢楼上的!
----------------解决方案--------------------------------------------------------