当前位置: 代码迷 >> Java相关 >> 看一下ensureCapacity!
  详细解决方案

看一下ensureCapacity!

热度:106   发布时间:2006-08-17 14:55:17.0
看一下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)。
----------------解决方案--------------------------------------------------------
多谢楼上的!
----------------解决方案--------------------------------------------------------
  相关解决方案