StringBuffer的容量不够的时候说是加16个字符,可为什么一下从16边到34了,我查了一下有的说是(16+1)×2,为什么?

解决方案 »

  1.   

    你是不是StringBuffer sb =new StringBuffer("");实例化的
      

  2.   

    你在append的时候跟到 java 的SOURCE看一下就明白了.也可以直接看JAVA的SOURCE.
      

  3.   

    答:容量扩充是由下述方法实现的(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);
        }
      

  4.   


    我是这样的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());


    }}
      

  5.   

    你可以去看jdk的代码,你如果在声明StringBuffer的时候不指定长度,增加的是 16加你的字符串的长度。
      

  6.   

    关于append()方法问题
    我也查了一下  有点意思.刚开始看 还真有点搞不明白.呵呵