Why use StringBuilder explicitly if the compiler converts string concatenation to a StringBuilder automatically? [duplicate]

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.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)