Встречается на собеседованиях • сегодня

Чем достигается отсутствие промежуточных объектов при использовании StringBuilder

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

Пример:

java
String result = "";
for (int i = 0; i < 100; i++) {
    result += i; // Создает новый String на каждой итерации
}

StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100; i++) {
    sb.append(i); // Работает с одним буфером
}

Ключевые моменты:

  1. Внутренний буфер увеличивается по схеме "новый размер = текущий * 2 + 2"
  2. Методы append(), insert() и др. работают с этим буфером напрямую
  3. Только при вызове toString() создается новый String
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы