15.1. Java - StringBuilder и StringBuffer. Методы класса



Классы StringBuffer и StringBuilder в Java используются, когда возникает необходимость сделать много изменений в строке символов.

В отличие от строк, объекты типа StringBuffer и StringBuilder могут быть изменены снова и снова, оставляя после себя множество новых неиспользуемых объектов.

В Java StringBuilder был введен начиная с Java 5. Основное различие между StringBuffer и StringBuilder является то, что методы StringBuilder не являются безопасными для потоков (несинхронизированные).

Рекомендуется использовать StringBuilder всякий раз, когда это возможно, потому что он быстрее, чем StringBuffer в Java. Однако, если необходима безопасность потоков, наилучшим вариантом являются объекты StringBuffer.

Пример

public class Test {

   public static void main(String args[]){
       StringBuffer sBuffer = new StringBuffer("тест");
       sBuffer.append(" StringBuffer");
       System.out.println(sBuffer);  
   }
}

Получим следующий результат:

тест StringBuffer

Методы StringBuffer

Список методов, поддерживаемых классом StringBuffer:

Методы с описанием
1 public StringBuffer append(String s)
Обновляет значение объекта, который вызывает метод. Этот метод принимает boolean, char, int, long, Strings и т.д.
2 public StringBuffer reverse()
Этот метод изменяет значение объекта StringBuffer, который вызывает метод.
3 public delete(int start, int end)
Удаляет строку, начиная с начального индекса до конечного индекса.
4 public insert(int offset, int i)
Этот метод вставляет строку s в позицию упомянутую по смещению.
5 replace(int start, int end, String str)
Этот метод заменяет символы в подстроке данного StringBuffer символами в указанной строке.

Список других методов (за исключением методов set), которые очень похожи на методы класса строк:

Методы с описанием
1 int capacity()
Возвращает текущую вместимость буфера String.
2 char charAt(int index)
Возвращается указанный символ последовательности, в настоящее время представленный буфером строки, указанный индексом аргумент.
3 void ensureCapacity(int minimumCapacity)
Гарантирует вместимость буфера, по крайней мере равным указанному минимуму.
4 void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
Символы копируются из этого буфера строки в символьный массив назначения dst.
5 int indexOf(String str)
Возвращает индекс в данной строке первого вхождения указанной подстроки.
6 int indexOf(String str, int fromIndex)
Возвращает индекс в данной строке первого вхождения указанной подстроки, начиная с указанного индекса.
7 int lastIndexOf(String str)
Возвращает индекс в данной строке последнего вхождения указанной подстроки.
8 int lastIndexOf(String str, int fromIndex)
Возвращает индекс в данной строке последнего вхождения указанной подстроки, начиная с указанного индекса.
9 int length()
Возвращает длину строкового буфера (количество символов).
10 void setCharAt(int index, char ch)
Символ с указанным индексом этого буфера строки имеет значение ch.
11 void setLength(int newLength)
Устанавливает длину буфера строки (Stringbuffer).
12 CharSequence subSequence(int start, int end)
Возвращает новую последовательность символов, которая является подпоследовательностью этой последовательности.
13 String substring(int start)
Возвращает новую строку, которая содержит подпоследовательность символов в данный момент содержащихся в StringBuffer. Подстрока начинается с указанного индекса и продолжается до конца StringBuffer.
14 String substring(int start, int end)
Возвращает новую строку, которая содержит подпоследовательность символов в данный момент содержащихся в этом StringBuffer.
15 String toString()
Преобразование в строку, представляющую данные в этой строке буфера.