Автор оригинала: Pankaj Kumar.
StringBuffer в java используется для создания изменяемых строковых объектов. Это означает, что мы можем использовать StringBuffer для добавления, изменения, замены, объединения и управления строками или последовательностью символов. Соответствующие методы в классе StringBuffer соответственно создаются для выполнения этих функций.
В Java строки, как известно, являются неизменяемыми или не редактируемыми, если они не перезаписаны. Именно здесь появляется класс StringBuffer, в котором он может размещать последовательности символов и при этом включать изменяемую функцию.
Буферизация строк на Java
Некоторые важные моменты, касающиеся StringBuffer в java, заключаются в следующем:
- StringBuffer очень похож на класс String, но с функциями изменяемости.
- В отличие от строк, в которых длина и распределение памяти являются окончательными, StringBuffer имеет существующие методы для изменения этих свойств.
- StringBuffer потокобезопасен, большинство его методов синхронизированы. Таким образом, объект StringBuffer не может быть доступен или использоваться несколькими потоками одновременно.
ява.ланг.StringBuffer
расширяетсяAbstractStringBuilder
абстрактный класс.- StringBuffer наследует
clone()
,equals()
,finalize()
,getClass()
,Хэш-код()
,notify()
иnotifyAll()
методы изjava.lang.Объект
супер класс. - StringBuffer реализует
Последовательность символов
,Добавляемые
иСериализуемые
интерфейсы. - Метод StringBuffer
capacity()
может использоваться для извлечения памяти, доступной для добавления новых последовательностей символов, за пределами которой будет происходить выделение. - По сравнению с классом StringBuilder, StringBuffer работает медленнее из-за синхронизации.
Класс Java StringBuffer обладает гибкостью выделения памяти последовательности символов. Это означает, что мы можем изменить данную строку с помощью класса StringBuffer. Что делает это возможным, так это то, что класс StringBuffer резервирует условную память для будущих изменений.
Схема классов StringBuffer
На рисунке ниже показаны интерфейсы, реализованные классом StringBuffer. Обратите внимание, что StringBuffer расширяет класс AbstractStringBuilder
, который был представлен в Java 1.5, когда также был представлен StringBuilder.
Конструкторы строковых буферов
StringBuffer()
: Создает буфер строк с пустым содержимым и 16 зарезервированными символами по умолчанию.StringBuffer(int Размер буфера)
: Создает буфер строк с переданным аргументом в качестве размера пустого буфера.StringBuffer(строка строки)
: Создает буфер строк с переданной строкой в качестве исходного содержимого буфера. Для целей модификации предварительно выделено 16 условных символов памяти, не включая буфер.
Методы строкового буфера
length()
: Возвращает длину объекта StringBuffer.capacity()
: Возвращает емкость объекта StringBuffer.добавить()
: добавляет указанное строковое представление аргумента в конец существующего строкового буфера. Этот метод перегружен для всех примитивных типов данных и объектов.метод insert()
: метод insert() принимает два параметра – целочисленное значение индекса для вставки значения и значение для вставки. Индекс указывает StringBuffer, куда вставить переданную последовательность символов. Опять же, этот метод перегружен для работы с примитивными типами данных и объектами.- обратный(): Изменяет существующее содержимое строки или последовательности символов в буфере и возвращает его. Объект должен иметь существующее содержимое, иначе будет выдано исключение NullPointerException .
удалить(int startIndex, int endIndex)
: принимает два целочисленных аргумента. Первый служит начальным индексом удаления, а второй-конечным индексом удаления. Поэтому последовательность символов между startIndex и endIndex–1 удаляется. Возвращается оставшееся содержимое строки в буфере.deleteCharAt(индекс int)
: удаляет один символ в строке внутри буфера. Местоположение удаленного символа определяется переданным целочисленным индексом. Возвращается оставшееся содержимое строки в буфере.заменить(int startIndex, int endIndex, String str)
: Принимает три аргумента: первые два являются начальным и конечным индексом существующего строкового буфера. Поэтому последовательность символов между startIndex и endIndex–1 удаляются. Затем строка, переданная в качестве третьего аргумента, вставляется в startIndex.
Вывод, полученный приведенным выше примером программы StringBuffer:
Выходные данные : Привет, мир 2017
Выходные данные : Привет, мир 2017
Вывод : dlroW olleH
Это все для StringBuffer на Java. Большую часть времени нам не нужно использовать StringBuffer, потому что строка неизменна, и мы можем использовать StringBuilder в однопоточных средах. Вы должны использовать StringBuffer только тогда, когда несколько потоков изменяют его содержимое.
Ссылка: API Doc