Easystringbuilder
Чем StringBuilder отличается от StringBuffer?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Оба — mutable последовательности символов. StringBuffer — synchronized методы, потокобезопасен, но медленнее. 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 —StringConcatFactoryinvokedynamic); - В цикле конкатенацию нужно делать вручную через StringBuilder;
- StringBuffer — legacy, использовать только если реально нужна thread-safety (редкость).
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.