gpt4 book ai didi

Java StringBuffer 追加分配

转载 作者:搜寻专家 更新时间:2023-11-01 01:38:37 26 4
gpt4 key购买 nike

在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);
}

关于Java StringBuffer 追加分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3983715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com