Мое простое правило.
- Если вы разумно можете написать одно выражение, производящее финал, тогда используйте
+
.
- Если вы не можете (из-за размера или изменчивости), используйте StringBuilder.
По моему опыту, такие выражения, как:
"Id: " + item.id + " name: " + item.name
можно написать и понять гораздо легче, чем:
StringBuilder sb = new StringBuilder();
sb.append("Id: ").append(item.id);
sb.append(" name: ").append(item.name);
(с последующим использованием строки из sb
, где было бы написано вышеприведенное выражение), и она работает одинаково хорошо (подсказка: посмотрите на скомпилированный код, чтобы понять почему!)
С другой стороны, когда необходимо накапливать строку во времени (во время выполнения программы) или в пространстве (состоящем из значений, поступающих из разных частей кода), таким образом, что нецелесообразно писать как один строковое выражение, то StringBuilder избегает накладных расходов (времени и памяти):
String s = somethingExpression;
...
s += someOtherExpression;
...
s += yetAnotherExpression;
...