Java Core middle

В чём разница: String vs StringBuilder vs StringBuffer?

Ответ

String: immutable, при конкатенации создаёт новый объект. StringBuilder: mutable, НЕ потокобезопасный (быстрый). StringBuffer: mutable, потокобезопасный (synchronized — медленнее). В цикле конкатенация String → O(n²) из-за создания нового объекта на каждой итерации.

Разбор: String неизменяем, и конкатенация создаёт новый объект; StringBuilder изменяем и НЕ потокобезопасен (быстрее), StringBuffer изменяем и потокобезопасен через synchronized (медленнее). Ловушка: именно StringBuffer синхронизирован, а не StringBuilder; конкатенация String в цикле даёт O(n²) из-за создания новых объектов на каждой итерации (компилятор оптимизирует только конкатенацию в одном выражении, не в цикле).

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться