StringBuilder
是用于构建文本的工具。内部使用字符数组来存储添加到其中的文本。capacity
表示数组的大小。length
表示目前已经填充了多少文本内容。因此,例如:
StringBuilder sb = new StringBuilder(1000);
sb.append("testing");
capacity()
为1000(在内部数组需要替换为较大的数组之前,有1000个字符的空间),length()
为7(数组中有七个含义字符)。
容量很重要,因为如果您试图向StringBuilder
添加超出其容量的文本,则必须分配新的、更大的缓冲区并将内容复制到其中,这会对内存使用和性能产生影响*。例如,StringBuilder
的默认容量目前为16个字符(未记录并可能更改),因此:
StringBuilder sb = new StringBuilder();
sb.append("Singing:");
sb.append("I am the very model of a modern Major General");
该代码使用一个 char[16]
创建了一个 StringBuilder
,将 "Singing:"
复制到这个数组中。为了添加第二个字符串,它需要创建一个新的数组,并将内容复制到其中,因为它没有足够的空间来添加第二个字符串。
* (这两者是否都重要取决于代码正在执行什么操作)
length()
代表当前容器中的元素数量,而capacity()
代表它目前所拥有的空间大小。 - khelwood