StringBuffer()
api中说:构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
StringBuffer sb=new StringBuffer();//超过默认容量了,也不提示错误
sb.append("1");
............
sb.append("100");StringBuffer sb=new StringBuffer(10);//超过容量了,不提示错误
sb.append("1");
............
sb.append("100");
增加到100不提示错误,已经超过了16啊.请问是为什么啊?
api中说:构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
StringBuffer sb=new StringBuffer();//超过默认容量了,也不提示错误
sb.append("1");
............
sb.append("100");StringBuffer sb=new StringBuffer(10);//超过容量了,不提示错误
sb.append("1");
............
sb.append("100");
增加到100不提示错误,已经超过了16啊.请问是为什么啊?
{
public static void main(String args[])
{
StringBuffer sb=new StringBuffer(1);
sb.append("a");
sb.append("b");
System.out.println(sb.capacity());返回4是什么意思啊?
}
}
也就是说如果超过默认容量,StringBuffer会自动增长
sb.capacity()表示当前可放字符串长度,超过这个值,StringBuffer容量自动增加
StringBuffer sb=new StringBuffer(1);//这样不是更好吗?可以节省内存啊?为什么别人不这么产生对象呢?
即StringBuffer sb = new StringBuffer(n);
n尽量接近可能分配的内存的最大值。append当然比+快,是直接填充内存空间,而不是新建并拷贝。