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