— Залишилося розібратися з StringBuilder і вважай, що ми закінчили.
Як ти вже знаєш, StringBuilder – це аналог класу String, який тільки змінюється.
— А ще я пам'ятаю, що компілятор сам генерує код із використанням StringBuilder, коли ми просто складаємо рядки.
— Так ти правий. Яка в тебе чудова пам'ять. Втім, як і всі роботи. Весь час забуваю про це.
Давай розберемося, що можна робити за допомогою класу StringBuilder:
1) У мене є звичайний рядок, я хочу зробити його змінним. Як мені це зробити?
String s = "Bender";
StringBuilder s2 = новий StringBuilder(s);
2) Я хочу додати символ до поточного «змінного рядка»?
String s = "Bender";
StringBuilder s2 = новий StringBuilder(s);
s2.append("!");
3) А як перетворити StringBuilder назад у рядок?
String s = "Bender";
StringBuilder s2 = новий StringBuilder(s);
s2.append("!");
s = s2.toString();
4) А якщо мені потрібно видалити символ?
String s = "Bender";
StringBuilder s2 = новий StringBuilder(s);
s2.deleteCharAt(2); //залишиться "Beder"
5) Я хочу замінити частину рядка на інший?
String s = "Bender";
StringBuilder s2 = новий StringBuilder(s);
s2.replace (3, 5, "_DE_"); //буде "Ben_DE_r"
6) Мені потрібно розгорнути рядок задом наперед?
String s = "Bender";
StringBuilder s2 = новий StringBuilder(s);
s2.reverse(); //буде "redneB";
— Круто. Дякую, Еллі, все зрозуміло.
— Рада, що тобі сподобалося.
Ще хотіла б нагадати, начебто про це мав би сказати Білаабо.
Є ще один клас – StringBuffer – це аналог класу StringBuilder, тільки його методи оголошені як synchronized. Отже, перед кожним викликом такого методу Java-машина перевіряє, чи зайнятий об'єкт, і якщо немає — позначає його як зайнятий. Після виходу з методу - "звільняє" об'єкт. Через це такі виклики працюють повільніше. Не варто користуватися StringBuffer без необхідності.
Але якщо тобі потрібен змінний об'єкт String, до якого будуть звертатися з кількох ниток – краще StringBuffer тобі не знайти.
— Спасибі за інформацію. Думаю, колись вона мені знадобиться.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ