> For the complete documentation index, see [llms.txt](https://kaze.gitbook.io/qa-theory/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kaze.gitbook.io/qa-theory/osnovy-programmirovaniya-na-java/klass-stringbuffer.md).

# Класс StringBuffer

Класс `StringBuffer` в Java является аналогом класса `StringBuilder`, который также представляет изменяемую последовательность символов. Однако есть одно существенное различие между ними: класс `StringBuffer` является потокобезопасным (синхронизированным), в то время как класс `StringBuilder` не синхронизирован и предназначен для использования в однопоточных сценариях.

1. **Создание объекта StringBuffer**: Вы можете создать объект `StringBuffer` с помощью конструктора или метода `append()`.

```java
StringBuffer sb = new StringBuffer(); // Создание пустого объекта StringBuffer
StringBuffer sb = new StringBuffer("Hello"); // Создание объекта StringBuffer с начальным содержимым "Hello"
```

2. **Методы для добавления содержимого**: Методы `append()` используются для добавления содержимого к объекту `StringBuffer`.

```java
StringBuffer sb = new StringBuffer();
sb.append("Hello"); // Добавление строки "Hello"
sb.append(" ").append("world"); // Добавление строки " world"
```

3. **Методы для вставки содержимого**: Методы `insert()` используются для вставки содержимого в определенное место в объекте `StringBuffer`.

```java
StringBuffer sb = new StringBuffer("world");
sb.insert(0, "Hello, "); // Вставка строки "Hello, " в начало
```

4. **Методы для удаления содержимого**: Методы `delete()` и `deleteCharAt()` используются для удаления содержимого из объекта `StringBuffer`.

```java
StringBuffer sb = new StringBuffer("Hello, world");
sb.delete(5, 13); // Удаление подстроки с позиции 5 до 13 (не включительно)
sb.deleteCharAt(0); // Удаление символа на позиции 0
```

5. **Методы для изменения содержимого**: Методы `replace()` и `setCharAt()` используются для замены или изменения символов в объекте `StringBuffer`.

```java
StringBuffer sb = new StringBuffer("Hello, world");
sb.replace(0, 5, "Hi"); // Замена подстроки с позиции 0 до 5 (не включительно) на "Hi"
sb.setCharAt(7, 'W'); // Изменение символа на позиции 7 на 'W'
```

6. **Методы для получения содержимого**: Методы `toString()` и `charAt()` используются для получения содержимого или символа из объекта `StringBuffer`.

```java
StringBuffer sb = new StringBuffer("Hello, world");
String str = sb.toString(); // Получение содержимого как строки
char ch = sb.charAt(7); // Получение символа на позиции 7
```
