As you mention, you should not use StringBuilder
instead of a simple string concatenation expression such as a + " = " + b
. The latter is faster to type, easier to read, and the compiler will use a StringBuilder
internally anyway so there is no performance advantage by rewriting it.
However StringBuilder
is useful if you are concatenating a large number of strings in a loop. The following code is inefficient. It requires O(n2) time to run and creates many temporary strings.
String result = "";
for (int i = 0; i < foo.length; ++i)
{
result += bar(foo[i]); // Bad
}
Try this instead:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < foo.length; ++i)
{
sb.append(bar(foo[i]));
}
String result = sb.toString();
The compiler optimises only simple a + b + c
expressions. It cannot optimize the above code automatically.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…