Когда StringBuffer / StringBuilder не используется неявным образом компилятором? - PullRequest
9 голосов
/ 24 ноября 2010

Я слышал, что компилятор (или это была JVM?) Автоматически использует StringBuilder для некоторой конкатенации строк. Когда подходящее время явно объявить один? Мне не нужен StringBuffer для того, чтобы быть потокобезопасным.

Спасибо.

1 Ответ

14 голосов
/ 24 ноября 2010

Компилятор будет использовать его автоматически для любой конкатенации строк, используя "+".

Обычно вы используете его явно, если хотите конкатенировать в цикле.Например:

StringBuilder builder = new StringBuilder();
for (String name : names)
{
    builder.append(name);
    builder.append(", ");
}
if (builder.length() > 0)
{
    builder.setLength(builder.length() - 2);
}
System.out.println("Names: " + builder);

Другой ситуацией может быть ситуация, когда вы хотите создать строку из нескольких методов или, возможно, обусловить некоторые части здания.По сути, если вы не строите строку в одном выражении (где вам может помочь компилятор), вы должны хотя бы рассмотреть возможность использования StringBuilder.

...