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( 等参数。如果您也添加元素,它将调整大小,但是如果您确切地知道它将有多少个元素,则可以通过准确指定其大小来节省一点内存和调整大小所需的操作。