Продолжаем тему работы со строками. Как вы поняли из предыдущего урока, строка 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». Если это ваш первый язык программирования, то вы скорей всего ничего не поняли из этого урока, не расстраивайтесь, переходите к следующим.
|