Доброго дня. В даній статті міститься опис методів Java класу StringBuffer. Клас StringBuffer подібний до класу String, окрім того, що його вміст може змінюватись. Вміст пимірника даного об'єкту являється безпечним для модифікації з різних потоків. Принциповими метожами класу StringBuffer являються append і insert, які є перевантаженими так, що можуть отримувати будь-який тип в якості аргументу. Кожен примірник класу StringBuffer має свою ємність. Поки кількість символів у об'єкті не перевищує розмір внутрішнього буферу, об'єкт не буде автоматично виділяти нову пам'ять під символи, але як тільки кількість символів перевищить розмір буферу, він автоматично збільшиться. Починаючи від випуску JDK5, до класів доповнено еквівалент класу StringBuffer, який призначений для викоритання тільки одним потоком. Цей клас називається StringBuilder. Класу StringBuilder повинна надаватись перевага перед класом StringBuffer, оскільки він працює швидше з цією ж множиною методів, оскільки він не виконує операцій синхронізації.

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

StringBuffer()
Конструює новий об'єкт класу StringBuffer, який містить пусту множину символів, і внутрішню ємність буферу у 16 символів.
StringBuffer(CharSequence seq)
Конструює новий примірник класу, який містить ту ж саму послідовність символів, що у вказаній послідовності CharSequence.
StringBuffer(int capacity)
Конструює новий об'єкт без символів і з вказаною ємністю внутрішнього буфера.
StringBuffer(String str)
Конструює новий об'єкт, який буде містити скопійований рядок з переданого об'єкту String.

Методи

StringBuffer append(boolean b)
Додає рядкове представлення, переданого в якості аргумента, булевого значення у кінець поточного рядка.
StringBuffer append(char c)
Додає переданий в якості аргументу символ у кінець поточного рядка.
StringBuffer append(char[] str)
Додає переданий в якості аргументу символьний масив у кінець поточного рядка.
StringBuffer append(char[] str, int offset, int len)
Додає переданий в якості аргументу символьний підмасив у кінець поточного рядка.
StringBuffer append(CharSequence s)
Додає передану в якості аргументу символьну послідовність у кінець поточного рядка.
StringBuffer append(CharSequence s, int start, int end)
Додає передану в якості аргументу частину символьної послідовності у кінець поточного рядка.
StringBuffer append(double d)
Додає рядкове представлення, переданого в якості аргумента, дійсного числа у кінець поточного рядка.
StringBuffer append(float f)
Додає рядкове представлення, переданого в якості аргумента, дійсного числа у кінець поточного рядка.
StringBuffer append(int i)
Додає рядкове представлення, переданого в якості аргумента, цілого числа у кінець поточного рядка.
StringBuffer append(long lng)
Додає рядкове представлення, переданого в якості аргумента, цілого числа у кінець поточного рядка.
StringBuffer append(Object obj)
Додає рядкове представлення, переданого в якості аргумента, об'єкта у кінець поточного рядка.
StringBuffer append(String str)
Додає переданий в якості аргументу рядок символів у кінець поточного рядка.
StringBuffer append(StringBuffer sb)
Додає переданий в якості аргументу рядок символів у кінець поточного рядка.
StringBuffer appendCodePoint(int codePoint)
Додає симольне представлення коду, переданого в якості цілочисельного аргумента, у кінець поточного рядка.
int capacity()
Повертає поточну ємність внутрішнього буфера.
char charAt(int index)
Повертає символ за вказаним індексом у поточному об'єкті.
int codePointAt(int index)
Повертає код (Unicode code point) символу за вказаним індексом.
int codePointBefore(int index)
Повертає код (Unicode code point) символу, який розміщений перед вказаним індексом.
int codePointCount(int beginIndex, int endIndex)
Повертає кількість кодів Unicode, яка розміщується у вказаному проміжку.
StringBuffer delete(int start, int end)
Видаляє вказаний проміжок символів.
StringBuffer deleteCharAt(int index)
Видаляє символ у вказаній позиції в поточному об'єкті.
void ensureCapacity(int minimumCapacity)
Збільшує місткість внутрішнього буферу об'єкта як мінімум до вказаного значення.
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
Символи копіюються з поточного об'єкта класу StringBuffer до вказаного масиву символів.
int indexOf(String str)
Повертає індекс початку найпершого входження вказаного рядка символів у поточному об'єкті.
int indexOf(String str, int fromIndex)
Повертає індекс початку найпершого входження вказаного рядка символів у поточному об'єкті, розпочинаючи з індексу fromIndex.
StringBuffer insert(int offset, boolean b)
Вставляє рядкове представлення булевого аргументу у поточний об'єкт за вказаним місцем.
StringBuffer insert(int offset, char c)
Вставляє значення символьного аргументу у поточний об'єкт за вказаним місцем.
StringBuffer insert(int offset, char[] str)
Вставляє рядкове представлення символьного масиву у поточний об'єкт за вказаним місцем.
StringBuffer insert(int index, char[] str, int offset, int len)
Вставляє рядкове представлення символьного підмасиву у поточний об'єкт за вказаним місцем.
StringBuffer insert(int dstOffset, CharSequence s)
Вставляє рядкове представлення символьної послідовності у поточний об'єкт за вказаним місцем.
StringBuffer insert(int dstOffset, CharSequence s, int start, int end)
Вставляє рядкове представлення частини символьної послідовності у поточний об'єкт за вказаним місцем.
StringBuffer insert(int offset, double d)
Вставляє рядкове представлення дійсного значення у поточний об'єкт за вказаним місцем.
StringBuffer insert(int offset, float f)
Вставляє рядкове представлення дійсного значення у поточний об'єкт за вказаним місцем.
StringBuffer insert(int offset, int i)
Вставляє рядкове представлення цілого значення у поточний об'єкт за вказаним місцем.
StringBuffer insert(int offset, long l)
Вставляє рядкове представлення дійсного значення у поточний об'єкт за вказаним місцем.
StringBuffer insert(int offset, Object obj)
Вставляє рядкове представлення переданого об'єкту у поточний об'єкт за вказаним місцем.
StringBuffer insert(int offset, String str)
Вставляє рядок символів у поточний об'єкт за вказаним місцем.
int lastIndexOf(String str)
Повертає індекс початку останнього входження переданого рядку символів у поточному об'єкті.
int lastIndexOf(String str, int fromIndex)
Повертає індекс початку останнього входження переданого рядку символів у поточному об'єкті, пошук розпочинеється у зворотньому порядку від індексу fromIndex.
int length()
Повертає кількість симолів, які містяться у поточному об'єкті.
int offsetByCodePoints(int index, int codePointOffset)
Повертає індекс, який являється зміщення відносно індекса index на кількість codePointOffset.
StringBuffer replace(int start, int end, String str)
Замінює символи з вказаного проміжку на символи, які містяться в значенні аргументу str.
StringBuffer reverse()
Змінює поточну послідовність символів в об'єкті на зворотню.
void setCharAt(int index, char ch)
Символ за вказаним індексом заміняється на символ ch.
void setLength(int newLength)
Вказує довжину послідовності символів поточного об'єкта.
CharSequence subSequence(int start, int end)
Повертає нову послідовність символів, яка створюється з вказаного проміжку имволів поточного об'єкта.
String substring(int start)
Повертає новий об'єкт String, який містить підмножину символів, що містяться у поточному об'єкті від вказаного індексу.
String substring(int start, int end)
Повертає новий об'єкт String, який містить підмножину символів, що містяться у поточному об'єкті у вказаному проміку.
String toString()
Повертає новий об'єкт String, який поредставляє дані з поточного об'єкту.
void trimToSize()
Метод "намагається" зменшити внутрішній буфер до розміру послідовності символів.

Приклад

Наступний код демонструє використання і резульати виконання основних методів класу StringBuffer.
/* приклад використання деяких
** методів класу StringBuffer */

class MainClass
{
  /* допоміжний метод для
  ** відображення вмісту і розміру буферів */
  public static void show_content (StringBuffer str)
  {
    System.out.println ("Вміст: " + str) ;
    System.out.println ("Кількість символів: " + str.length()) ;
    System.out.println ("Місткість буферу: " + str.capacity()) ;
  }
  
  public static void main (String[] opts)
  {
    StringBuffer sbuff = new StringBuffer () ;
    
    System.out.println ("Додаємо вміст використовуючи метод append.") ;
    /* один символ */
    sbuff.append ('J') ;
    /* об'єкт String */
    sbuff.append ("ava") ;
    /* масив символів */
    sbuff.append (new char[] {' ', 'є', ' ', 'ч', 'у', 
                              'д', 'о', 'в', 'и', 'м'}) ;
    
    show_content (sbuff) ;
    
    System.out.println ("Встановлюєм довжину за допомогою методу setLength().") ;
    sbuff.setLength (12) ;
    
    show_content (sbuff) ;
    
    System.out.println ("Змінюєм вміст за допомогою методів setCharAt і insert.") ;
    sbuff.setCharAt (5, 'я') ;
    sbuff.insert (6, "вляється") ;
    sbuff.insert (sbuff.length(), "им") ;
    
    show_content (sbuff) ;
    
    System.out.println ("Змінюєм вміст за допомогою методу replace.") ;
    sbuff.replace (0, 4, "C++ також") ;
    
    show_content (sbuff) ;
    
    System.out.println ("Додаємо до об'єкту дійсне і ціле значення") ;
    sbuff.append (3.1415) ;
    sbuff.append (' ') ;
    sbuff.append (123456789) ;
    
    show_content (sbuff) ;
  }
}
Після компілювання, збирання пакету і виконання його на Java-машині можна отримати наступний результат: java_StringBuffer_method_demonstration_output