gpt4 book ai didi

java - 如果编译器自动将字符串连接转换为 StringBuilder,为什么要显式使用 StringBuilder?

转载 作者:IT老高 更新时间:2023-10-28 20:55:14 28 4
gpt4 key购买 nike

Possible Duplicate:
StringBuilder vs String concatenation in toString() in Java

我想知道,由于编译器在执行字符串连接时在内部使用 StringBuilder 来附加字符串,那么如果字符串连接已经为您完成了这项工作,那么有什么意义?为什么还要使用 StringBuilder 呢?还有其他具体原因吗?

最佳答案

正如您所提到的,您不应使用 StringBuilder 来代替简单的字符串连接表达式,例如 a + "= "+ b。后者打字速度更快,更容易阅读,而且编译器无论如何都会在内部使用 StringBuilder,因此重写它并没有性能优势。

但是,如果您在循环中连接大量字符串,则 StringBuilder 很有用。以下代码效率低下。它需要 O(n2) 时间来运行并创建许多临时字符串。

String result = "";
for (int i = 0; i < foo.length; ++i)
{
result += bar(foo[i]); // Bad
}

试试这个:

StringBuilder sb = new StringBuilder();
for (int i = 0; i < foo.length; ++i)
{
sb.append(bar(foo[i]));
}
String result = sb.toString();

编译器只优化简单的a + b + c 表达式。无法自动优化上述代码。

关于java - 如果编译器自动将字符串连接转换为 StringBuilder,为什么要显式使用 StringBuilder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11942368/

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