在java中使用StringBuffer时,我想知道在需要重新分配空间时如何实现append函数.
例如,如果我追加一个比当前分配的空间更长的字符串,它如何在方法的细节中管理它?
源代码包含在JDK下载中.只需查找src.zip文件(我的是Program Files(x86)\ Java\jdk1.6.0_01\src.zip).解压后,只需转到java/lang,就可以检查StringBuffer.java,StringBuilder.java和AbstractStringBuilder.java.
在此实现中,AbstractStringBuilder中的"expandCapacity"看起来像计算容量并执行Arrays.copyOf()来扩展缓冲区.值得注意的是,第一次检查是<0以防止溢出情况.
void expandCapacity(int minimumCapacity) {
int newCapacity = (value.length + 1) * 2;
if (newCapacity < 0) {
newCapacity = Integer.MAX_VALUE;
} else if (minimumCapacity > newCapacity) {
newCapacity = minimumCapacity;
}
value = Arrays.copyOf(value, newCapacity);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1401 次 |
| 最近记录: |