字符串使用容量作为参数的缓冲区插入方法


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

此代码的输出为 avaffffffffffffffffffffffffffffffffffffffffffvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv .

参数 10 在 StringBuffer 类的方法中有什么用?如果 10 是缓冲区的大小,0 是插入方法的偏移量,那么我们将如何获取整个字符串作为输出?

来自 JavaDoc:

字符串

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

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

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

阅读文档:

容量 - 初始容量。

所以它不是"大小"。

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

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

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

最新更新