Easystringbuilder

Чем StringBuilder отличается от StringBuffer?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Оба — mutable последовательности символов. StringBuffersynchronized методы, потокобезопасен, но медленнее. StringBuilder (Java 5) — без synchronized, быстрее, но не потокобезопасен (только один поток).

// StringBuilder — для построения строк в цикле
StringBuilder sb = new StringBuilder();
for (String word : words) {
    sb.append(word).append(", ");
}
String result = sb.toString();

new StringBuilder(1024); // можно задать начальную capacity
  • Конкатенация a + b + c компилятор превращает в StringBuilder (с Java 9 — StringConcatFactory invokedynamic);
  • В цикле конкатенацию нужно делать вручную через StringBuilder;
  • StringBuffer — legacy, использовать только если реально нужна thread-safety (редкость).

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.