StringBuffer类有两个属性分别为 length 和 capacity 
请问这两个有什么区别啊?         StringBuffer sb = new StringBuffer();
         sb.append("java web");
         System.out.println(sb.length());// 8
         System.out.println(sb.capacity());// 这个是怎么不16呢?是和本身机器有关?

解决方案 »

  1.   


    每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。StringBuffer
    public StringBuffer(String str)构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。该字符串的初始容量为 16 加上字符串参数的长度。 
      

  2.   

    capacity是指现在开char[]的容量
    length是指已经放入char[]的字符个数
    永远length<=capacity
    16参考new StringBuffer()
      

  3.   

    public int capacity()返回当前容量。容量指可用于最新插入的字符的存储量,超过这一容量就需要再次进行分配。
      

  4.   

    System.out.println(sb.capacity());// 这个是怎么不16呢?是和本身机器有关?
    经测试 输出的是16
      

  5.   

    capacity 指的是提供了多大的空间
    length  指的是占用了多大空间
      

  6.   

    StringBuffer构造函数源代码public StringBuffer() {
    super(16);
    }
      

  7.   

    呵呵,capacity就好比是你的肚子了,可以装多少东西
          length是指已经装了多少食物了。
      

  8.   

    public int capacity()
    Returns the current capacity. 
    The capacity is the amount of storage available for newly inserted characters, 
    beyond which an allocation will occur. 
      

  9.   

    capacity 指的是提供了多大的空间 
    length  指的是占用了多大空间
      

  10.   

    StringBuffer sb = new StringBuffer();
    sb.append("java web java web java web");
    System.out.println(sb.length());//长度是26
    System.out.println(sb.capacity());//输出是34
    我想问那个capacity的增长是不是没规律的,只要length<capacity就行了~?
      

  11.   

    如果当前容量小于 minimumCapacity 参数,则可分配一个具有更大容量的新的内部数组。新容量的大小应大于: 
    minimumCapacity 参数。 
    旧容量的两倍加 2。
      

  12.   

    呵呵,为什么是16不是其它的数啊?sun规定的
      

  13.   

    每个缓冲区都有一个容量,就譬如一致杯子最多可以放多少水一样,这个就是capacity,但是一个杯子不一定就能装满,那么当前杯子里的水就是length了。
      

  14.   


        /**
         * Constructs a string buffer with no characters in it and an 
         * initial capacity of 16 characters. 
         */
        public StringBuffer() {
    super(16);
        }
    看源码
      

  15.   

    楼上都说了默认就是16啦源代码里面写明了。
    要不你在new的时候给他分配个默认长度咯
      

  16.   

    2L赞。
    java学习交流群:20378027。欢迎大家加入。