Java Core trainee

В чём отличие String, StringBuilder, StringBuffer?

Ответ

String — immutable. Каждая конкатенация создаёт новый объект, в цикле это O(n²) по памяти. StringBuilder — mutable, не потокобезопасный, быстрый. StringBuffer — mutable + synchronized методы, потокобезопасный, но медленнее.

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

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

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