sách gpt4 ăn đã đi

Tại sao nên sử dụng StringBuilder một cách rõ ràng nếu trình biên dịch tự động chuyển đổi nối chuỗi thành StringBuilder?

In lại Tác giả: IT Lão Cao 更新时间:2023-10-28 20:55:14 28 4
mua khóa gpt4 giày nike

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

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

câu trả lời hay nhất

正如您所提到的,您不应使用 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
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress