Ответ 1
Как вы упомянули, вы не должны использовать StringBuilder
вместо простого выражения конкатенации строки, например a + " = " + b
. Последний быстрее набирать, читать легче, и компилятор будет использовать внутри StringBuilder
внутри, так что нет преимущества производительности, переписывая его.
Однако StringBuilder
полезен, если вы конкатенируете большое количество строк в цикле. Следующий код неэффективен. Для этого требуется O (n 2) время и создает много временных строк.
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
. Он не может автоматически оптимизировать вышеуказанный код.