Как StringBuilder оптимизирует работу со строками

«Как StringBuilder оптимизирует работу со строками» — вопрос из категории Java, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

StringBuilder оптимизирует работу со строками, избегая создания множества промежуточных объектов при конкатенации. В отличие от обычных строк (String), которые иммутабельны, StringBuilder использует изменяемый буфер.

Пример:

val builder = StringBuilder()
for (i in 1..1000) {
    builder.append(i) // Не создаёт новую строку каждый раз
}
val result = builder.toString()

Преимущества:

  • Экономит память (не копирует строки при каждом изменении).
  • Быстрее при множественных операциях (O(n) против O(n²) у String).
  • Поддерживает методы append(), insert(), delete() и др.

Важно: Для однократной конкатенации ("A" + "B") StringBuilder избыточен — компилятор оптимизирует это автоматически.