Top.Mail.Ru

Перечень уроков по Java

13. Строки в Java. Класс StringBuffer

Объекты класса StringBuffer — это строки переменной длины. Класс StringBuffer  поддерживает многопоточность. Ообъект данного класса может меняться в различных потоках.

Класс StringBuffer имеет буфер под символы строки. Только что созданный объект имеет буфер размером 16 символов. Как только буфер начинает переполняться, его емкость автоматически увеличивается, чтобы вместить новые символы. Емкость можно задать в конструкторе объекта. 

Конструкторы 

StringBuffer определяет четыре конструктора:

StringBuffer() - создание пустой строки, буфер равен 16 символам
StringBuffer(int capacity) - создание пустой строки, буфер равен capacity символам
StringBuffer(String str)- создание копии строки на основе существующей строки, буфер равен 16 символам
StringBuffer(CharSequence chars) - создание строки на основе набора символов,  буфер равен 16 символам

 

Методы класса StringBuffer
length()

Метод позволяет получить текущую длину объекта.

StringBuffer strbuf = new StringBuffer("Java");

System.out.println("Длина: " + strbuf.length()); // 4 

capacity()

Метод позволяет получить текущий объём выделенной памяти.

StringBuffer strbuf = new StringBuffer("Java");

System.out.println("Емкость: " + strbuf.capacity()); // 16 + 4 = 20

StringBuffer инициализируется строкой "Java", поэтому его емкость составляет 4 + 16 = 20 символов.

charAt(int index)

Извлечь значение отдельного символа

StringBuffer strbuf = new StringBuffer("Java");

strbuf.charAt(0);  //J

setCharAt(int index, char ch)

установить новое значение символа указав индекс символа и его значение

StringBuffer strbuf = new StringBuffer("Java");

strbuf.setCharAt(0,'j');//j

Добавить подстроку

В классе stringBuffer есть десять перегруженных  методов append(), добавляющих подстроку в конец строки.

Вот формат типичного метода:

append (String str)

 Метод присоединяет строку str в конец данной строки.

 StringBuffer strbuf;

 strbuf  = new StringBuffer();

 strbuf.append("Центр ");

 strbuf.append("«Турбо»");

 System.out.println("strbuf= "+ strbuf);// strbuf= Центр «Турбо»

 Вставить подстроку

insert (int index, string str)

вставляет строку str в данную строку перед символом с индексом index.

Например, после выполнения

strbuf.insert(6, "компьютерного обучения ");

System.out.println("strbuf= "+ strbuf);  //strbuf= Центр компьютерного обучения «Турбо»

//еще вариант

String sb = new StringBuffer("Центр «Турбо»").insert(6, "компьютерного обучения ").toString();

System.out.println("sb= "+ sb); //sb= Центр компьютерного обучения «Турбо»

Удалить подстроку

 delete (int begin, int end)

удаляет из строки символы с индекса begin включительно  до индекса end-1

 

strbuf.delete(6, 29);

 System.out.println("stbuf= "+strbuf);   //stbuf= Центр «Турбо»

 Удалить символ

 deleteCharAt (int ind)

удаляет символ с указанным индексом ind.

StringBuilder strCh = new StringBuilder(); 

strCh.append("ADC-DRF");

strCh.deleteCharAt(3);

System.out.println("strCh= "+strCh);  // strCh= ADCDRF

Заменить подстроку

 replace (int begin, int end, String str )

 удаляет символы из строки, начиная с индекса begin  до индекса end-1  и вставляет вместо них строку str.

StringBuilder strCh = new StringBuilder();

strCh.append("ADC-DRF");
String str3 ="- буквы английского алфавита";
strCh.replace(3, 7, str3);
System.out.println("strCh= "+strCh);  // strCh=ADC- буквы английского алфавита

 

Сравнение строк

Часто недостаточно знать, что строки просто идентичны. Для приложений, выполняющих сортировку, нужно знать, какая из строк меньше, равна или больше следующей.

Строка меньше другой, если она расположена перед ней в лексикоrpафическом порядке.

Строка больше другой, если расположена после нее.

Метод String по имени compareTo()  служит этой цели. Он имеет следующую общую форму:

int n=  S.compareTo(String str)

S – первая строка
Str – строка, с которой выполняется сравнение
n
=0 строки равны

n<0 строка S меньше str, например,S=”aaa”, а str=”bbb”;
n>0 строка S больше str, например,S=”bbb”, а str=”aaa”;

 

 

String stA="aa";

String stB="bb";

int n=  stA.compareTo(stB);

System.out.println("n= "+n);  // -1

 Обратный порядок в строке

 Метод reverse() меняет порядок в StringBuffer на обратный:

StringBuffer strBuffer = new StringBuffer("ABCDE");
strBuffer.reverse();
System.out.println(strBuffer.toString()); //EDCBA