Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: StringBuilder, StringBuffer, mutable strings, Java

Какие есть альтернативы String для изменяемых строк?

Вопрос проверяет знание альтернатив неизменяемому классу String для эффективной работы с изменяемыми строками в Java.

Короткий ответ

В Java основными альтернативами String для изменяемых строк являются StringBuilder и StringBuffer. StringBuilder не синхронизирован и быстрее, подходит для однопоточных сценариев. StringBuffer синхронизирован, поэтому безопасен для многопоточности, но медленнее. Оба класса позволяют изменять строки без создания новых объектов.

Длинный ответ

Альтернативы String для изменяемых строк

В Java класс String является неизменяемым (immutable), что означает, что каждое изменение строки создает новый объект. Это может быть неэффективно при частых модификациях, особенно в циклах. Для решения этой проблемы существуют классы StringBuilder и StringBuffer, которые представляют изменяемые последовательности символов.

StringBuilder

StringBuilder появился в Java 5 и является несинхронизированным, что делает его быстрее в однопоточных средах. Он предоставляет методы для добавления, вставки, удаления и замены символов.

StringBuilder sb = new StringBuilder("Hello");
sb.append(" World"); // "Hello World"
sb.insert(5, ","); // "Hello, World"
sb.replace(7, 12, "Java"); // "Hello, Java"
String result = sb.toString();

StringBuffer

StringBuffer является синхронизированным, что делает его потокобезопасным. Он появился в Java 1.0 и имеет схожий API с StringBuilder, но с дополнительными накладными расходами на синхронизацию.

StringBuffer sb = new StringBuffer("Hello");
sb.append(" World");
String result = sb.toString();

Когда использовать

  • Используйте StringBuilder в однопоточных приложениях для максимальной производительности.
  • Используйте StringBuffer в многопоточных сценариях, где несколько потоков могут одновременно изменять строку.
  • Избегайте конкатенации строк через оператор + в циклах, так как это создает множество временных объектов.

Вывод: StringBuilder и StringBuffer являются эффективными альтернативами String для работы с изменяемыми строками. Выбор между ними зависит от требований к потокобезопасности. В большинстве современных приложений предпочтение отдается StringBuilder из-за его скорости.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • Java

    Java

Ключевые слова

#StringBuilder

#StringBuffer

#mutable strings

#Java

Подпишись на Java Developer в телеграм