pet*_*ter 36 java stringbuilder
我想知道,因为编译器内部使用StringBuilder在执行字符串连接时附加2个字符串,那么问题是什么?如果字符串连接已经为你完成了工作,我为什么要使用StringBuilder呢?还有其他具体原因吗?
Mar*_*ers 65
正如您所提到的,您不应该使用StringBuilder简单的字符串连接表达式来代替a + " = " + b.后者输入速度更快,更易于阅读,编译器StringBuilder无论如何都会在内部使用,因此重写它没有性能优势.
但是StringBuilder,如果要在循环中连接大量字符串,则非常有用.以下代码效率低下.它需要O(n 2)次运行并创建许多临时字符串.
String result = "";
for (int i = 0; i < foo.length; ++i)
{
result += bar(foo[i]); // Bad
}
Run Code Online (Sandbox Code Playgroud)
试试这个:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < foo.length; ++i)
{
sb.append(bar(foo[i]));
}
String result = sb.toString();
Run Code Online (Sandbox Code Playgroud)
编译器仅优化简单a + b + c表达式.它无法自动优化上述代码.
| 归档时间: |
|
| 查看次数: |
16684 次 |
| 最近记录: |