Nir*_*ADV 2 java stringbuilder stringbuffer
我试图弄清楚何时使用或为什么capacity()方法与length()方法StringBuilder或StringBuffer类不同.
我搜索了Stack Overflow并设法得出这个答案,但我不明白它与length()方法的区别.我也访问了这个网站,但这对我帮助更少.
StringBuilder用于构建文本.在内部,它使用一个字符数组来保存您添加到其中的文本.capacity是数组的大小.length是应该使用的文本当前填充了多少该数组.所以:
StringBuilder sb = new StringBuilder(1000);
sb.append("testing");
Run Code Online (Sandbox Code Playgroud)
capacity()是1000(在内部数组需要用较大的数组替换之前有1000个字符的空间),并且length()是7(数组中有7个有意义的字符).
容量很重要,因为如果你尝试添加更多的文本而StringBuilder不是它有容量,它必须分配一个新的,更大的缓冲区并将内容复制到它,这有内存使用和性能影响*.例如,a的默认容量StringBuilder当前为16个字符(未记录且可能更改),因此:
StringBuilder sb = new StringBuilder();
sb.append("Singing:");
sb.append("I am the very model of a modern Major General");
Run Code Online (Sandbox Code Playgroud)
...创建a StringBuilder,a char[16],复制"Singing:"到该数组中,然后必须创建一个新数组并将内容复制到它之后才能添加第二个字符串,因为它没有足够的空间来添加第二个字符串.
*(是否重要取决于代码的作用)
| 归档时间: |
|
| 查看次数: |
1609 次 |
| 最近记录: |