StringBuffer的容量问题 StringBuffer的容量不够的时候说是加16个字符,可为什么一下从16边到34了,我查了一下有的说是(16+1)×2,为什么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你是不是StringBuffer sb =new StringBuffer("");实例化的 你在append的时候跟到 java 的SOURCE看一下就明白了.也可以直接看JAVA的SOURCE. 答:容量扩充是由下述方法实现的(JDK源代码),你看一下就明白了。 void expandCapacity(int minimumCapacity) { int newCapacity = (value.length + 1) * 2; if (newCapacity < 0) { newCapacity = Integer.MAX_VALUE; } else if (minimumCapacity > newCapacity) { newCapacity = minimumCapacity; } value = Arrays.copyOf(value, newCapacity); } 我是这样的class string_buff{ public static void main(String args[]) { StringBuffer str=new StringBuffer(); str.append("大家好"); str.append("大家好我们大家都很愿意学习java语言"); System.out.println("str: "+str); System.out.println("length: "+str.length()); System.out.println("capacity: "+str.capacity()); }} 你可以去看jdk的代码,你如果在声明StringBuffer的时候不指定长度,增加的是 16加你的字符串的长度。 关于append()方法问题我也查了一下 有点意思.刚开始看 还真有点搞不明白.呵呵 java堆的问题 关于中间有空行的文件的读取 cavaj反编译.class遇到内部类出错 ArrayList存储 comm.jar操作串口问题,非常急大家帮忙啊? 如何将一个String字符串放到Char[]字符数组里排序? 谁有java视频课件 jbuilder的小问题 jdk中有单步执行的命令吗?如何实现? Jbuilder5如何做浮突工具栏按钮 用户用不用配置数据源 public Object fun() 不用返回有用的对象时 怎么写?
int newCapacity = (value.length + 1) * 2;
if (newCapacity < 0) {
newCapacity = Integer.MAX_VALUE;
} else if (minimumCapacity > newCapacity) {
newCapacity = minimumCapacity;
}
value = Arrays.copyOf(value, newCapacity);
}
我是这样的class string_buff
{
public static void main(String args[])
{
StringBuffer str=new StringBuffer();
str.append("大家好");
str.append("大家好我们大家都很愿意学习java语言");
System.out.println("str: "+str);
System.out.println("length: "+str.length());
System.out.println("capacity: "+str.capacity());
}}
我也查了一下 有点意思.刚开始看 还真有点搞不明白.呵呵