Java StringBuilder类,为什么还有16个空元素?

时间:2014-09-04 21:58:44

标签: java stringbuilder

我正在寻找Java Class String Builder,并想知道为什么要添加它 额外的16个空元素尾随字符串以供后续构造函数

  1. StringBuilder(CharSequence cs):构造一个字符串构建器,其中包含与指定CharSequence相同的字符,加上一个尾随theCharSequence的额外16个空元素。
  2. String Builder(String s):创建一个字符串构建器,其值由指定的字符串初始化,加上尾随字符串的额外16个空元素。
  3. 为什么StringBuilder可以随时更改其容量时需要额外的16个空元素 需要的?

    提前致谢! :)

2 个答案:

答案 0 :(得分:3)

16个字符是在任何StringBuilder构造函数中分配的默认可用空间,除了您自己提供容量的那个(除了您已经提到的构造函数之外,没有参数的构造函数也分配16个字符的初始容量) )。

它允许您将一些字符附加到StringBuilder而无需增加容量。这种行为的原因很可能就是表现。

答案 1 :(得分:2)

StringBuilder有一个capacity,这是可用于插入字符的存储空间。如果您尝试添加更多,则需要分配新的存储空间以容纳这些空间。使用这些构造函数的新StringBuilder构建添加了16个容量,允许您添加更多字符而无需重新分配。这是表演的事。

请注意,如果您知道它将包含多少个字符,则可以使用StringBuilder构造函数创建具有指定容量的StringBuilder(int capacity)