Классы StringBuffer/StringBuilder

Основное отличие String от StringBuffer состоит в том, что при модификации строки StringBuffer, в отличии от String, не создает новый экземпляр объекта, а модифицирует сам объект. Объект класса StringBuffer представляет собой буфер, содержащий строку. Кроме длины строки, он имеет еще и размер буфера, который, как правило, несколько больше самой длины строки. Создать StringBuffer можно из строки String, а так же пустой StringBuffer и StringBuffer заданного размера. Длину строки можно получить методом length(), размер буфера capacity(). Класс StringBuilder появился в 5 версии Java и он во всем идентичен классу StringBuffer, за исключением того, что он не является потоково-безопасным, что делает его значительно шустрее. Но цена скорости - небезопасное поведение при написании программ, в которых существует несколько потоков для обработки данных. Рассмотрим на примере методы работы со StringBuffer:

public static void main(String[] args) {

StringBuffer s1 = new StringBuffer(); // резеривирует буфер из 16 символов

StringBuffer s2 = new StringBuffer(50); // устанавливает размер буфера 50 симв.

StringBuffer s = new StringBuffer("Привет"); // устанавливает содержимое плюс еще 16 буфер

System. out. println("Длина объекта: " + s.length());

System. out. println("Общий объем памяти: " + s.capacity());

int index = s.indexOf("р");

s.setCharAt(index, 'л'); // устанавливает символ 'л' на позицию index

System. out. println(s);

System. out. println(s.charAt(0)); // получает символ позиции 0

s.append(" мир!"); // добавить в конец строки дополнительно " мир!"

System. out. println(s);

System. out. println(s.reverse()); // меняет порядок символов

s.deleteCharAt(0); // удаляет символ с позиции 0

System. out. println(s);

s.delete(0, 5); // удаляет символы с 0 по 4 включительно

System. out. println(s);

s.delete(0, s.length()); // очистим строку

s.append("Это - тест");

System. out. println(s);

s.replace(4, 5, "был"); // заменяет набор символо с 4 по 5 (5 невключительно) словом "был"

System. out. println(s);

s.insert(7, " хороший"); // вставляет на позицию 7 подстроку " хороший"

System. out. println(s);

System. out. println(s.substring(0, 3)); // возвращает часть строки с 0 по 3 (3 невключительно) символ

System. out. println(s);

}

Вывод в консоль:

Длина объекта: 6

Общий объем памяти: 22

Пливет

П

Пливет мир!

!рим тевилП

рим тевилП

евилП

Это - тест

Это был тест

Это был хороший тест

Это

Это был хороший тест


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: