Ответ
StringBuilder — это изменяемый (mutable) класс для эффективного построения и модификации строк, особенно при множественных операциях.
Ключевое преимущество — производительность. Конкатенация строк через + или String.concat() создаёт новые неизменяемые объекты String в куче, что приводит к лишним аллокациям памяти и сборке мусора. StringBuilder работает с изменяемым внутренним массивом символов (char[]).
Сравнение на примере цикла:
// НЕЭФФЕКТИВНО: Создаётся много промежуточных строк
String result = "";
for (int i = 0; i < 1000; i++) {
result += i; // Каждый раз создаётся новый String!
}
// ЭФФЕКТИВНО: Изменяется один объект StringBuilder
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
sb.append(i);
}
String result = sb.toString();
Основные методы:
append()– добавление в конец.insert()– вставка в позицию.delete(),replace()– удаление и замена.reverse()– реверс строки.
Когда использовать:
- Динамическое построение строк в циклах.
- Формирование сложных SQL-запросов или JSON/XML.
- Многократные модификации одной строки.
Важно: StringBuilder не потокобезопасен. Для многопоточных сценариев используйте StringBuffer (синхронизированный, но медленнее).