Небольшой вопрос по Java

Рейтинг: 0Ответов: 1Опубликовано: 12.09.2014

Всем привет!

Изучаю помаленьку разработку под Андроид. Сегодня столкнулся с таким понятием:

StringBuilder sb = new StringBuilder();

Хотел понять точно. Правильно ли я понял, что мы создаем класс строки. Но отличие от обычной строки то, что когда мы склеиваем 2 строки, то создается объект третий строки, что занимает память. А когда тут добавляем в строку, то он использует только этот объект. Добавляем методом append.

Спасибо!

Ответы

▲ 3Принят

Строки в Java имутабельны, поэтому при всех манипуляциях будут лишние выделения памяти.

То есть такой код:

String s = "a";
for(int i = 0; i < 10; i++)
   s+='a';

создаст (выделит памяти) 10 строк.

StringBuilder же работает в рамках блока памяти, который ему выделился. То есть это та же строка, но большего размера и все изменения оного не ведут к выделению новой памяти.
Если у вас много конкатенаций строк, то лучше использовать его, чтоб по 100 раз не выделять память.