Классы Java StringBuffer и StringBuilder

При изменении строк необходимо использовать классы StringBuffer и StringBuilder.

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

При использовании класса StringBuffer каждая операция выполняется над самим объектом StringBuffer, а не создаёт новый объект, поэтому, если вам нужно изменять строки, рекомендуется использовать StringBuffer.

Класс StringBuilder был представлен в Java 5. Самое большое отличие от StringBuffer заключается в том, что методы StringBuilder не являются потокобезопасными (к ним нельзя обращаться синхронно).

Поскольку StringBuilder имеет преимущество в скорости перед StringBuffer, в большинстве случаев рекомендуется использовать класс StringBuilder.

Пример

public class ExampleTest{ public static void main(String[] args){ StringBuilder sb = new StringBuilder(10); sb.append("Example.."); System.out.println(sb); sb.append("!"); System.out.println(sb); sb.insert(8, "Java"); System.out.println(sb); sb.delete(5,8); System.out.println(sb); } }

Результат компиляции и выполнения вышеприведённого примера следующий:

Example..
Example..!
Example..Java!
RunooJava!

Однако, когда приложению требуется потокобезопасность, необходимо использовать класс StringBuffer.

Код файла Test.java:

public class Test{ public static void main(String[] args){ StringBuffer sBuffer = new StringBuffer("Официальный сайт учебного руководства с примерами:"); sBuffer.append("www"); sBuffer.append(".example"); sBuffer.append(".com"); System.out.println(sBuffer); } }

Результат компиляции и выполнения вышеприведённого примера следующий:

Example官网:www.example.com

Методы StringBuffer

Ниже перечислены основные методы, поддерживаемые классом StringBuffer:

Нет. Описание метода
1 public StringBuffer append(String s)
Добавляет указанную строку к этой последовательности символов.
2 public StringBuffer reverse()
Заменяет эту последовательность символов её обратной формой.
3 public delete(int start, int end)
Удаляет символы в подстроке этой последовательности.
4 public insert(int offset, int i)
будетintВставляет строковое представление аргумента в эту последовательность.
5 insert(int offset, String str)
будетstrВставляет строку аргумента в эту последовательность.
6 replace(int start, int end, String str)
Используя заданнуюStringзаменяет символы в подстроке этой последовательности символами из заданной строки String.

В следующем списке перечислены другие распространённые методы класса StringBuffer:

Нет. Описание метода
1 int capacity()
Возвращает текущую емкость.
2 char charAt(int index)
Возвращает значение типа char по указанному индексу в этой последовательности.charзначение.
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)
Возвращает индекс последнего вхождения подстроки в объекте String.
9 int length()
Возвращает длину (количество символов).
10 void setCharAt(int index, char ch)
Устанавливает символ по заданному индексу вch。
11 void setLength(int newLength)
Устанавливает длину последовательности символов.
12 CharSequence subSequence(int start, int end)
Возвращает новую последовательность символов, которая является подпоследовательностью данной последовательности.
13 String substring(int start)
Возвращает новыйString, который содержит подпоследовательность символов, в настоящее время содержащуюся в этой последовательности символов.
14 String substring(int start, int end)
Возвращает новыйString, которая содержит подпоследовательность символов, в настоящее время содержащуюся в этой последовательности.
15 String toString()
Возвращает строковое представление данных в этой последовательности.

Дополнительный материал:

Другие расширения