stringBuffer使用capacity作为参数的插入方法

时间:2014-11-11 11:26:02

标签: java

public class example{
    public static void main(String args[]) {
       StringBuffer s1 = new StringBuffer(10);
       s1.insert(0,avaffffffffffffffffffffffffffffffffffffffffffvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv");
       System.out.println(s1);
    }
}

此代码的输出为avaffffffffffffffffffffffffffffffffffffffffffvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

StringBuffer类的方法中参数10的用途是什么? 如果10是Buffer的大小而0是insert方法的偏移量,那么我们如何将整个字符串作为输出?

3 个答案:

答案 0 :(得分:2)

来自JavaDoc:

  

字符串缓冲区类似于String,但可以修改。在任何   它包含一些特定的字符序列,但是   序列的长度和内容可以通过一定的改变   方法调用

10只是初始容量(继续阅读JavaDoc):

  

每个字符串缓冲区都有容量。只要字符串缓冲区中包含的字符序列的长度不超过容量,就不必分配新的内部缓冲区数组。如果内部缓冲区溢出,它会自动变大。

答案 1 :(得分:0)

Read the docs

  

容量 - 初始容量。

所以它不是' size'。

答案 2 :(得分:0)

  

StringBuffer类的方法中参数10的用途是什么?如果10是Buffer的大小而0是insert方法的偏移量,那么我们如何将整个字符串作为输出?

答案是,如果您知道它不太可能用完,您可以使初始容量变小。创建字符串缓冲区时,必须分配内存。默认大小为16,但如果您只想将其用于一个字符,则可以指定初始容量为1,并且因为只有在向其添加多个字符时才会调整大小,因此可以避免浪费内存。

这同样适用于HashSet(n)之类的参数。如果你也添加元素它会调整大小,但是如果你确切地知道它将具有多少元素,你可以通过精确指定它的大小来节省一点内存和调整大小所需的操作。

相关问题