Основна відмінність String від StringBuffer полягає в тому, що при модифікації рядка StringBuffer, на відміну від String, не створює новий екземпляр об'єкта, а модифікує сам об'єкт. Об'єкт класу StringBuffer являє собою буфер, що містить рядок. Крім довжини рядка, він має ще і розмір буфера, який, як правило, трохи більше самої довжини рядка. Створити StringBuffer можна з рядка String, а так само порожній StringBuffer і StringBuffer заданого розміру. Довжину рядка можна отримати методом length(), розмір буфера capacity(). За допомогою методу charAt можна отримати будь-який символ рядка.
Давайте продемонструємо це на прикладі:
StringBuilder s = new StringBuilder("a");
for(int i = 0; i < 100;i++) {
s.append('a');
}
Конструктор StringBuilder може приймати на вход рядок, з яким можна проводить подальші дії. Крім методів, які дозволяют добавити в конец рядка різні типи даних (append) він також вміє видаляти і вставляти символи в рядки:
s.deleteCharAt(i);//видаляє символ в позиціі i
s.delete(i, j);// видаляє пірядок з i - го по j - ий символ s.insert(i,j);//вставляет на i - ое место объект j |
1
2 3 4 5 6 7 8 |
StringBuilder s = new StringBuilder("abcd");
s.append('e');//abcde s.delete(1,2);//acde s.insert(1,'b');//abcde s.deleteCharAt(2);//abde int len = s.length();
int
cap
=
s.capacity();
String ans = s.toString(); |
Главная идея урока: "Если вы собираетесь часто изменять строку (например в цикле) то используйте класс - обертку StringBuilder".
Немає коментарів:
Дописати коментар