Java. Урок 7. StringBuilder

  13 января 2013  Автор статьи: lordrp 

Продолжаем тему работы со строками. Как вы поняли из предыдущего урока, строка String является некой константой, и каждый раз вы просто заново создаете некую новую константу и кладете ее в свою переменную, таким образом следует понимать, что любое изменение в строках связано с использованием памяти под новую строку.

1
2
3
4
5
String s = "a";
for(int i = 0; i < 100; i++)
{
       s+='a';
}

Сей прекрасный код создаст 100 строк, которые будут хранится в памяти, пока сборщик мусора не удалит их. для того, поэтому, если вы напишите такой код в реальном проекте, то вам оторвут руки. Чтобы редактировать строки следует использовать класс обертку StringBuilder. Предыдущий пример можно переписать следующим образом:

1
2
3
4
StringBuilder s = new StringBuilder("a");
for(int i = 0; i < 100;i++)   {      
      s.append('a');
}

Конструктор StringBuilder может принимать на вход строку, с которой можно проводить дальнейшие манипуляции. Кроме методов, которые позволяют добавить в конец строки различные типы данных (append) он также умеет удалять и вставлять символы в строки:

1
2
3
s.deleteCharAt(i);//удаляет символ в позиции i
s.delete(i, j);//удаляет подстроку с i - го по j - ый символ
s.insert(i,j);//вставляет на i - ое место объект j

Для того, чтобы вернутся от StringBuilder к String необходимо вызвать метод toString();

1
2
3
4
5
6
 StringBuilder s = new StringBuilder("abcd");
 s.append('e');//abcde
 s.delete(1,2);//acde
 s.insert(1,'b');//abcde
 s.deleteCharAt(2);//abde
 String ans = s.toString();

Главная идея урока: "Если вы собираетесь часто изменять строку (например в цикле) то используйте класс - обертку StringBuilder". Если это ваш первый язык программирования, то вы скорей всего ничего не поняли из этого урока, не расстраивайтесь, переходите к следующим.

  • Дима

    "Если это ваш первый язык программирования, то вы скорей всего ничего не поняли из этого урока, не расстраивайтесь, переходите к следующим."
    )))))))))))))

Научиться программировать