gpt4 book ai didi

string - 在循环中对字符串使用 += 是不好的做法吗?

转载 作者:行者123 更新时间:2023-12-03 22:56:18 28 4
gpt4 key购买 nike

我在另一篇文章中看到了这种构建字符串的方法,该方法已被删除。

其中一条评论将这种做法描述为“职业限制”

为什么会这样?

最佳答案

假设您在这里谈论 Java,我会回答。

我能想到的原因不止一个。第一个是 Java 字符串是不可变的,当你做 += 时要连接字符串,将创建一个新的 String 对象,并将对该对象的引用分配给您的字符串变量。

所以当你这样做时:

for (int i = 0; i < 100; i++)
myString += ...blah...

您正在创建 100 个新的字符串对象。请注意,旧的确实可以去任何地方,因此它们最终会在一段时间内被垃圾收集,因为我们没有存储对它们的引用。但是,这仍然不好,因为垃圾收集需要时间,而且堆中的对象过多会降低应用程序的速度。此外,如果您不打算使用它们,为什么要创建这么多对象。

更好的解决方案是使用 StringBuilder , 当然;
StringBuilder myString = new StringBuilder();
for (int i = 0; i < 100; i++)
myString.append(...blah...);
String s = myString.toString();

另一个原因可能是,如果您已经知道需要附加哪些字符串(或至少估计总大小),则可以预先分配空间,这样就不需要时不时地分配新空间随着你的字符串变大。

最后,您可以使用字符数组,预分配空间,并使用 this interesting point 做得更好。 Joel Spolsky 关于 C 的标准库字符串连接功能所做的。

关于string - 在循环中对字符串使用 += 是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18561424/

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