gpt4 book ai didi

java - StringBuffer和append方法

转载 作者:行者123 更新时间:2023-12-01 17:01:47 24 4
gpt4 key购买 nike

以下操作是否会降低 append 方法的性能以及在 append 中创建了多少个 String 对象?

long[] numbers = new long[20];

StringBuffer result = new StringBuffer(20);

for (int i = 0; i <= max; i++) {

result.append(numbers[i] + " ");

}
System.out.println(result);

我的意思是,如果字符串是不可变的,append 方法应该为 numbers[i] 创建一个,然后为空格创建另一个 "",将它们组合成一个最终的字符串和垃圾收集这两个?我错了吗 ?加号在这里是多余的还是我应该使用以下内容:

for (int i = 0; i <= max; i++) {

result.append(numbers[i]);
result.append(" ");
}

最佳答案

第一个版本实际上会被编译成这样的东西:

for (int i = 0; i <= max; i++) {

result.append( new StringBuilder(numbers[i]).append(" ").toString() );

}

所以你可以看到我们在每次迭代中创建一个全新的StringBuilder,然后将其丢弃。

所以你的第二个版本要好得多,因为它只使用 1 个 StringBuffer。

我还建议您使用StringBuilder而不是StringBuffer,因为StringBuffers同步并且您似乎只在单个线程。

关于java - StringBuffer和append方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27235703/

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