Spec-Zone.ru › OpenJDK 27

Класс CharBuffer

java.lang.Object
java.nio.Buffer
java.nio.CharBuffer
Все реализуемые интерфейсы:
Appendable, CharSequence, Comparable<CharBuffer>, Readable
public abstract sealed class CharBuffer extends Buffer implements Comparable<CharBuffer>, Appendable, CharSequence, Readable
Символьный буфер.

Этот класс определяет четыре категории операций над символьными буферами:

  • Методы get и put с абсолютной и относительной адресацией, которые считывают и записывают отдельные символы;

  • Методы bulk get с абсолютной и относительной адресацией, которые копируют непрерывные последовательности символов из этого буфера в массив;

  • Методы bulk put с абсолютной и относительной адресацией, которые копируют непрерывные последовательности символов из массива char, строки или другого символьного буфера в этот буфер;

  • Метод для compacting символьного буфера.

Символьные буферы можно создать с помощью метода allocation, который выделяет память для содержимого буфера, с помощью метода wrapping, оборачивающего существующий массив char или строку в буфер, либо создав представление существующего байтового буфера.

Как и байтовый буфер, символьный буфер может быть прямым или непрямым. Символьный буфер, созданный с помощью методов wrap этого класса, будет непрямым. Символьный буфер, созданный как представление байтового буфера, будет прямым тогда и только тогда, когда прямым является сам байтовый буфер. Определить, является ли символьный буфер прямым, можно вызовом метода isDirect.

Этот класс реализует интерфейс CharSequence, благодаря чему символьные буферы можно использовать везде, где принимаются последовательности символов, например в пакете регулярных выражений java.util.regex. Методы, определённые в CharSequence, при вызове выполняют операции относительно текущей позиции буфера.

Методы этого класса, для которых не предусмотрено иного возвращаемого значения, возвращают буфер, для которого они вызваны. Это позволяет объединять вызовы методов в цепочку. Например, последовательность операторов

    cb.put("text/");
    cb.put(subtype);
    cb.put("; charset=");
    cb.put(enc);
можно заменить одним оператором
    cb.put("text/").put(subtype).put("; charset=").put(enc);

Необязательные операции

Методы, обозначенные как необязательные операции, при вызове для CharBuffer, доступного только для чтения, выбрасывают исключение ReadOnlyBufferException. Методы array и arrayOffset выбрасывают исключение UnsupportedOperationException, если CharBuffer не поддерживается доступным массивом char (независимо от того, доступен ли CharBuffer только для чтения).
Начиная с версии:
1.4

Краткое описание методов

Модификатор и тип Метод Описание
static CharBuffer allocate(int capacity)
Выделяет новый символьный буфер.
CharBuffer append(char c)
Добавляет указанный символ в этот буфер (необязательная операция).
CharBuffer append(CharSequence csq)
Добавляет указанную последовательность символов в этот буфер (необязательная операция).
CharBuffer append(CharSequence csq, int start, int end)
Добавляет подпоследовательность указанной последовательности символов в этот буфер (необязательная операция).
final char[] array()
Возвращает массив char, на основе которого создан этот буфер (необязательная операция).
final int arrayOffset()
Возвращает смещение первого элемента буфера относительно массива, на основе которого создан этот буфер (необязательная операция).
abstract CharBuffer asReadOnlyBuffer()
Создаёт новый доступный только для чтения символьный буфер, совместно использующий содержимое этого буфера.
final char charAt(int index)
Считывает символ по указанному индексу относительно текущей позиции.
final CharBuffer clear()
Очищает этот буфер.
abstract CharBuffer compact()
Уплотняет этот буфер (необязательная операция).
int compareTo(CharBuffer that)
Сравнивает этот буфер с другим.
abstract CharBuffer duplicate()
Создаёт новый символьный буфер, совместно использующий содержимое этого буфера.
boolean equals(Object ob)
Определяет, равен ли этот буфер другому объекту.
final CharBuffer flip()
Переворачивает этот буфер.
abstract char get()
Относительный метод get.
CharBuffer get(char[] dst)
Относительный пакетный метод get.
CharBuffer get(char[] dst, int offset, int length)
Относительный пакетный метод get.
abstract char get(int index)
Абсолютный метод get.
CharBuffer get(int index, char[] dst)
Абсолютный пакетный метод get.
CharBuffer get(int index, char[] dst, int offset, int length)
Абсолютный пакетный метод get.
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
Относительный пакетный метод get.
final boolean hasArray()
Определяет, поддерживается ли этот буфер доступным массивом char.
int hashCode()
Возвращает текущий хеш-код этого буфера.
abstract boolean isDirect()
Определяет, является ли этот символьный буфер прямым.
final boolean isEmpty()
Возвращает true, если этот символьный буфер пуст.
final int length()
Возвращает длину этого символьного буфера.
final CharBuffer limit(int newLimit)
Устанавливает предел этого буфера.
final CharBuffer mark()
Устанавливает отметку буфера на его текущей позиции.
int mismatch(CharBuffer that)
Находит и возвращает относительный индекс первого несовпадения этого буфера с заданным буфером.
abstract ByteOrder order()
Возвращает порядок байтов этого буфера.
final CharBuffer position(int newPosition)
Устанавливает позицию этого буфера.
abstract CharBuffer put(char c)
Относительный метод put (необязательная операция).
final CharBuffer put(char[] src)
Относительный пакетный метод put (необязательная операция).
CharBuffer put(char[] src, int offset, int length)
Относительный пакетный метод put (необязательная операция).
abstract CharBuffer put(int index, char c)
Абсолютный метод put (необязательная операция).
CharBuffer put(int index, char[] src)
Абсолютный пакетный метод put (необязательная операция).
CharBuffer put(int index, char[] src, int offset, int length)
Абсолютный пакетный метод put (необязательная операция).
CharBuffer put(int index, CharBuffer src, int offset, int length)
Абсолютный пакетный метод put (необязательная операция).
final CharBuffer put(String src)
Относительный пакетный метод put (необязательная операция).
CharBuffer put(String src, int start, int end)
Относительный пакетный метод put (необязательная операция).
CharBuffer put(CharBuffer src)
Относительный пакетный метод put (необязательная операция).
int read(CharBuffer target)
Пытается считать символы в указанный символьный буфер.
final CharBuffer reset()
Возвращает позицию этого буфера к ранее установленной отметке.
final CharBuffer rewind()
Перематывает этот буфер в начало.
abstract CharBuffer slice()
Создаёт новый символьный буфер, содержимое которого является общей подпоследовательностью содержимого этого буфера.
abstract CharBuffer slice(int index, int length)
Создаёт новый символьный буфер, содержимое которого является общей подпоследовательностью содержимого этого буфера.
abstract CharBuffer subSequence(int start, int end)
Создаёт новый символьный буфер, представляющий указанную подпоследовательность этого буфера относительно текущей позиции.
String toString()
Возвращает строку, содержащую символы этого буфера.
static CharBuffer wrap(char[] array)
Оборачивает массив char в буфер.
static CharBuffer wrap(char[] array, int offset, int length)
Оборачивает массив char в буфер.
static CharBuffer wrap(CharSequence csq)
Оборачивает последовательность символов в буфер.
static CharBuffer wrap(CharSequence csq, int start, int end)
Оборачивает последовательность символов в буфер.

Методы, объявленные в классе Buffer

capacity, hasRemaining, isReadOnly, limit, position, remaining
Модификатор и тип Метод Описание
final int capacity()
Возвращает ёмкость этого буфера.
final boolean hasRemaining()
Определяет, есть ли элементы между текущей позицией и пределом.
abstract boolean isReadOnly()
Определяет, доступен ли этот буфер только для чтения.
final int limit()
Возвращает предел этого буфера.
final int position()
Возвращает позицию этого буфера.
final int remaining()
Возвращает количество элементов между текущей позицией и пределом.

Методы, объявленные в классе Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ждать пробуждения, обычно вследствие уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ждать пробуждения, обычно вследствие уведомления или прерывания, либо истечения определённого интервала реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ждать пробуждения, обычно вследствие уведомления или прерывания, либо истечения определённого интервала реального времени.

Методы, объявленные в интерфейсе CharSequence

chars, codePoints
Модификатор и тип Метод Описание
default IntStream chars()
Возвращает поток значений int, расширяющий нулями значения char этой последовательности.
default IntStream codePoints()
Возвращает поток значений кодовых точек этой последовательности.

Подробное описание методов

allocate

public static CharBuffer allocate(int capacity)
Выделяет новый буфер char.

Позиция нового буфера будет равна нулю, его предел будет равен его емкости, его отметка будет не определена, каждый его элемент будет инициализирован нулем, а порядок байтов будет соответствовать native order используемому аппаратным обеспечением. Буфер будет иметь backing array, а его array offset будет равен нулю.

Параметры:
capacity — емкость нового буфера, в символах
Возвращает:
Новый буфер char
Исключения:
IllegalArgumentException — если capacity является отрицательным целым числом

wrap

public static CharBuffer wrap(char[] array, int offset, int length)
Оборачивает массив char в буфер.

Новый буфер будет опираться на указанный массив char; то есть изменения буфера будут изменять массив, и наоборот. Емкость нового буфера будет равна array.length, его позиция будет равна offset, его предел будет равен offset + length, его отметка будет не определена, а порядок байтов будет соответствовать native order используемому аппаратным обеспечением. Его backing array будет указанным массивом, а его array offset будет равен нулю.

Параметры:
array — массив, на который будет опираться новый буфер
offset — смещение используемого подмассива; должно быть неотрицательным и не превышать array.length. Позиция нового буфера будет установлена в это значение.
length — длина используемого подмассива; должна быть неотрицательной и не превышать array.length - offset. Предел нового буфера будет установлен в offset + length.
Возвращает:
Новый буфер char
Исключения:
IndexOutOfBoundsException — если не выполняются предварительные условия для параметров offset и length

wrap

public static CharBuffer wrap(char[] array)
Оборачивает массив char в буфер.

Новый буфер будет опираться на указанный массив char; то есть изменения буфера будут изменять массив, и наоборот. Емкость и предел нового буфера будут равны array.length, его позиция будет равна нулю, его отметка будет не определена, а порядок байтов будет соответствовать native order используемому аппаратным обеспечением. Его backing array будет указанным массивом, а его array offset будет равен нулю.

Параметры:
array — массив, на который будет опираться этот буфер
Возвращает:
Новый буфер char

read

public int read(CharBuffer target) throws IOException
Пытается прочитать символы в указанный буфер символов. Буфер используется непосредственно как хранилище символов: единственные изменения — результат операции put. Переворот или перемотка буфера не выполняются. Если длина указанного буфера символов равна нулю, символы прочитаны не будут и будет возвращен ноль.
Определено в:
read в интерфейсе Readable
Параметры:
target — буфер, в который нужно прочитать символы
Возвращает:
Количество символов, добавленных в буфер, возможно, ноль; либо -1, если источник символов исчерпан
Исключения:
IOException — если произошла ошибка ввода-вывода
ReadOnlyBufferException — если целевой буфер доступен только для чтения, даже если его длина равна нулю
Начиная с версии:
1.5

wrap

public static CharBuffer wrap(CharSequence csq, int start, int end)
Оборачивает последовательность символов в буфер.

Содержимое нового буфера, доступного только для чтения, будет совпадать с содержимым указанной последовательности символов. Емкость буфера будет равна csq.length(), его позиция будет равна start, его предел будет равен end, а его отметка будет не определена.

Параметры:
csq — последовательность символов, из которой создается новый буфер символов
start — индекс первого используемого символа; должен быть неотрицательным и не превышать csq.length(). Позиция нового буфера будет установлена в это значение.
end — индекс символа, следующего за последним используемым символом; должен быть не меньше start и не превышать csq.length(). Предел нового буфера будет установлен в это значение.
Возвращает:
Новый буфер символов
Исключения:
IndexOutOfBoundsException — если не выполняются предварительные условия для параметров start и end

wrap

public static CharBuffer wrap(CharSequence csq)
Оборачивает последовательность символов в буфер.

Содержимое нового буфера, доступного только для чтения, будет совпадать с содержимым указанной последовательности символов. Емкость и предел нового буфера будут равны csq.length(), его позиция будет равна нулю, а его отметка будет не определена.

Параметры:
csq — последовательность символов, из которой создается новый буфер символов
Возвращает:
Новый буфер символов

slice

public abstract CharBuffer slice()
Создает новый буфер char, содержимое которого является общей подпоследовательностью содержимого этого буфера.

Содержимое нового буфера будет начинаться с текущей позиции этого буфера. Изменения содержимого этого буфера будут видны в новом буфере, и наоборот; значения позиции, предела и отметки двух буферов будут независимыми.

Позиция нового буфера будет равна нулю, его емкость и предел будут равны количеству оставшихся в этом буфере символов, его отметка будет не определена, а порядок байтов будет идентичен порядку байтов этого буфера. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и будет доступен только для чтения тогда и только тогда, когда этот буфер доступен только для чтения.

Определено в:
slice в классе Buffer
Возвращает:
Новый буфер char

slice

public abstract CharBuffer slice(int index, int length)
Создает новый буфер char, содержимое которого является общей подпоследовательностью содержимого этого буфера.

Содержимое нового буфера будет начинаться с позиции index в этом буфере и включать length элементов. Изменения содержимого этого буфера будут видны в новом буфере, и наоборот; значения позиции, предела и отметки двух буферов будут независимыми.

Позиция нового буфера будет равна нулю, его емкость и предел будут равны length, его отметка будет не определена, а порядок байтов будет идентичен порядку байтов этого буфера. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и будет доступен только для чтения тогда и только тогда, когда этот буфер доступен только для чтения.

Определено в:
slice в классе Buffer
Параметры:
index — позиция в этом буфере, с которой будет начинаться содержимое нового буфера; должна быть неотрицательной и не превышать limit()
length — количество элементов в новом буфере; должно быть неотрицательным и не превышать limit() - index
Возвращает:
Новый буфер
Исключения:
IndexOutOfBoundsException — если index отрицательно или больше limit(), length отрицательно или length > limit() - index
Начиная с версии:
13

duplicate

public abstract CharBuffer duplicate()
Создает новый буфер char, совместно использующий содержимое этого буфера.

Содержимое нового буфера будет совпадать с содержимым этого буфера. Изменения содержимого этого буфера будут видны в новом буфере, и наоборот; значения позиции, предела и отметки двух буферов будут независимыми.

Емкость, предел, позиция, значение отметки и порядок байтов нового буфера будут идентичны соответствующим значениям этого буфера. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и будет доступен только для чтения тогда и только тогда, когда этот буфер доступен только для чтения.

Определено в:
duplicate в классе Buffer
Возвращает:
Новый буфер char

asReadOnlyBuffer

public abstract CharBuffer asReadOnlyBuffer()
Создает новый буфер char, доступный только для чтения и совместно использующий содержимое этого буфера.

Содержимое нового буфера будет совпадать с содержимым этого буфера. Изменения содержимого этого буфера будут видны в новом буфере; однако сам новый буфер будет доступен только для чтения и не позволит изменять общее содержимое. Значения позиции, предела и отметки двух буферов будут независимыми.

Емкость, предел, позиция, значение отметки и порядок байтов нового буфера будут идентичны соответствующим значениям этого буфера.

Если этот буфер сам доступен только для чтения, данный метод работает точно так же, как метод duplicate.

Возвращает:
Новый буфер char, доступный только для чтения

get

public abstract char get()
Относительный метод get. Считывает символ char в текущей позиции буфера, а затем увеличивает позицию.
Возвращает:
Символ char в текущей позиции буфера
Исключения:
BufferUnderflowException — если текущая позиция буфера не меньше его предела

put

public abstract CharBuffer put(char c)
Относительный метод put (необязательная операция).

Записывает указанный символ char в этот буфер в текущей позиции, а затем увеличивает позицию.

Параметры:
c — записываемый символ char
Возвращает:
Этот буфер
Исключения:
BufferOverflowException — если текущая позиция этого буфера не меньше его предела
ReadOnlyBufferException — если этот буфер доступен только для чтения

get

public abstract char get(int index)
Абсолютный метод get. Считывает символ char по указанному индексу.
Параметры:
index — индекс, по которому будет считан символ char
Возвращает:
Символ char по указанному индексу
Исключения:
IndexOutOfBoundsException — если index отрицательно или не меньше предела буфера

put

public abstract CharBuffer put(int index, char c)
Абсолютный метод put (необязательная операция).

Записывает указанный символ char в этот буфер по указанному индексу.

Параметры:
index — индекс, по которому будет записан символ char
c — записываемое значение char
Возвращает:
Этот буфер
Исключения:
IndexOutOfBoundsException — если index отрицательно или не меньше предела буфера
ReadOnlyBufferException — если этот буфер доступен только для чтения

get

public CharBuffer get(char[] dst, int offset, int length)
Относительный метод get для пакетного чтения.

Этот метод переносит символы из данного буфера в указанный массив назначения. Если в буфере осталось меньше символов, чем требуется для выполнения запроса, то есть если length > remaining(), символы не переносятся и выбрасывается исключение BufferUnderflowException.

В противном случае этот метод копирует length символов из этого буфера в указанный массив, начиная с текущей позиции буфера и указанного смещения в массиве. Затем позиция этого буфера увеличивается на length.

Иными словами, вызов этого метода в форме src.get(dst, off, len) имеет точно такой же эффект, как цикл

    for (int i = off; i < off + len; i++)
        dst[i] = src.get();
за исключением того, что сначала проверяется наличие в этом буфере достаточного количества символов, а сам метод потенциально намного эффективнее.
Параметры:
dst — массив, в который будут записаны символы
offset — смещение в массиве первого записываемого символа; должно быть неотрицательным и не превышать dst.length
length — максимальное количество символов для записи в указанный массив; должно быть неотрицательным и не превышать dst.length - offset
Возвращает:
Этот буфер
Исключения:
BufferUnderflowException — если в этом буфере осталось меньше length символов
IndexOutOfBoundsException — если не выполняются предварительные условия для параметров offset и length

get

public CharBuffer get(char[] dst)
Относительный метод get для пакетного чтения.

Этот метод переносит символы из данного буфера в указанный массив назначения. Вызов этого метода в форме src.get(a) работает точно так же, как вызов

    src.get(a, 0, a.length)
Параметры:
dst — массив назначения
Возвращает:
Этот буфер
Исключения:
BufferUnderflowException — если в этом буфере осталось меньше length символов

get

public CharBuffer get(int index, char[] dst, int offset, int length)
Абсолютный метод get для пакетного чтения.

Этот метод переносит length символов из этого буфера в указанный массив, начиная с указанного индекса в этом буфере и указанного смещения в массиве. Позиция этого буфера не изменяется.

Вызов этого метода в форме src.get(index, dst, offset, length) имеет точно такой же эффект, как следующий цикл, за исключением того, что сначала проверяется согласованность переданных параметров, а сам метод потенциально намного эффективнее:

    for (int i = offset, j = index; i < offset + length; i++, j++)
        dst[i] = src.get(j);
Параметры:
index — индекс в этом буфере, с которого будет считан первый символ char; должен быть неотрицательным и меньше limit()
dst — массив назначения
offset — смещение в массиве первого записываемого символа char; должно быть неотрицательным и меньше dst.length
length — количество символов char для записи в указанный массив; должно быть неотрицательным и не превышать меньшее из значений limit() - index и dst.length - offset
Возвращает:
Этот буфер
Исключения:
IndexOutOfBoundsException — если не выполняются предварительные условия для параметров index, offset и length
Начиная с версии:
13

get

public CharBuffer get(int index, char[] dst)
Абсолютный метод get для пакетного чтения.

Этот метод переносит символы из этого буфера в указанный массив назначения. Позиция этого буфера не изменяется. Вызов этого метода в форме src.get(index, dst) работает точно так же, как вызов:

    src.get(index, dst, 0, dst.length)
Параметры:
index — индекс в этом буфере, с которого будет считан первый символ char; должен быть неотрицательным и меньше limit()
dst — массив назначения
Возвращает:
Этот буфер
Исключения:
IndexOutOfBoundsException — если index отрицательно, не меньше limit() или limit() - index < dst.length
Начиная с версии:
13

put

public CharBuffer put(CharBuffer src)
Относительный метод put для пакетной записи (необязательная операция).

Этот метод переносит оставшиеся символы из указанного исходного буфера в этот буфер. Если в исходном буфере осталось больше символов, чем в этом буфере, то есть если src.remaining() > remaining(), символы не переносятся и выбрасывается исключение BufferOverflowException.

В противном случае этот метод копирует n = src.remaining() символов из указанного буфера в этот буфер, начиная с текущей позиции каждого буфера. Затем позиции обоих буферов увеличиваются на n.

Иными словами, вызов этого метода в форме dst.put(src) имеет точно такой же эффект, как цикл

    while (src.hasRemaining())
        dst.put(src.get());
за исключением того, что сначала проверяется наличие в этом буфере достаточного свободного места, а сам метод потенциально намного эффективнее. Если этот буфер и исходный буфер используют один и тот же поддерживающий массив или одну и ту же область памяти, результат будет таким, как если бы исходные элементы сначала были скопированы во временное место, а затем записаны в этот буфер.
Параметры:
src — исходный буфер, из которого считываются символы; не должен быть этим буфером
Возвращает:
Этот буфер
Исключения:
BufferOverflowException — если в этом буфере недостаточно места для оставшихся символов исходного буфера
IllegalArgumentException — если исходный буфер является этим буфером
ReadOnlyBufferException — если этот буфер доступен только для чтения

put

public CharBuffer put(int index, CharBuffer src, int offset, int length)
Абсолютный метод put для пакетной записи (необязательная операция).

Этот метод переносит length символов в этот буфер из указанного исходного буфера, начиная с указанной offset в исходном буфере и указанной index в этом буфере. Позиции обоих буферов не изменяются.

Иными словами, вызов этого метода в форме dst.put(index, src, offset, length) имеет точно такой же эффект, как цикл

    for (int i = offset, j = index; i < offset + length; i++, j++)
        dst.put(j, src.get(i));
за исключением того, что сначала проверяется согласованность переданных параметров, а сам метод потенциально намного эффективнее. Если этот буфер и исходный буфер используют один и тот же поддерживающий массив или одну и ту же область памяти, результат будет таким, как если бы исходные элементы сначала были скопированы во временное место, а затем записаны в этот буфер.
Параметры:
index — индекс в этом буфере, по которому будет записан первый символ char; должен быть неотрицательным и меньше limit()
src — буфер, из которого считываются символы
offset — индекс в исходном буфере первого считываемого символа char; должен быть неотрицательным и меньше src.limit()
length — количество символов char для считывания из указанного буфера; должно быть неотрицательным и не превышать меньшее из значений limit() - index и src.limit() - offset
Возвращает:
Этот буфер
Исключения:
IndexOutOfBoundsException — если не выполняются предварительные условия для параметров index, offset и length
ReadOnlyBufferException — если этот буфер доступен только для чтения
Начиная с версии:
16

put

public CharBuffer put(char[] src, int offset, int length)
Относительный метод put для пакетной записи (необязательная операция).

Этот метод переносит символы из указанного исходного массива в этот буфер. Если из массива требуется скопировать больше символов, чем осталось в этом буфере, то есть если length > remaining(), символы не переносятся и выбрасывается исключение BufferOverflowException.

В противном случае этот метод копирует length символов из указанного массива в этот буфер, начиная с указанного смещения в массиве и текущей позиции этого буфера. Затем позиция этого буфера увеличивается на length.

Иными словами, вызов этого метода в форме dst.put(src, off, len) имеет точно такой же эффект, как цикл

    for (int i = off; i < off + len; i++)
        dst.put(src[i]);
за исключением того, что сначала проверяется наличие в этом буфере достаточного свободного места, а сам метод потенциально намного эффективнее.
Параметры:
src — массив, из которого считываются символы
offset — смещение в массиве первого считываемого символа; должно быть неотрицательным и не превышать src.length
length — количество символов для считывания из указанного массива; должно быть неотрицательным и не превышать src.length - offset
Возвращает:
Этот буфер
Исключения:
BufferOverflowException — если в этом буфере недостаточно места
IndexOutOfBoundsException — если не выполняются предварительные условия для параметров offset и length
ReadOnlyBufferException — если этот буфер доступен только для чтения

put

public final CharBuffer put(char[] src)
Относительный метод put для пакетной записи (необязательная операция).

Этот метод переносит все содержимое указанного исходного массива char в этот буфер. Вызов этого метода в форме dst.put(a) работает точно так же, как вызов

    dst.put(a, 0, a.length)
Параметры:
src — исходный массив
Возвращает:
Этот буфер
Исключения:
BufferOverflowException — если в этом буфере недостаточно места
ReadOnlyBufferException — если этот буфер доступен только для чтения

put

public CharBuffer put(int index, char[] src, int offset, int length)
Абсолютный метод put для пакетной записи (необязательная операция).

Этот метод переносит length символов из указанного массива, начиная с указанного смещения в массиве и указанного индекса в этом буфере. Позиция этого буфера не изменяется.

Вызов этого метода в форме dst.put(index, src, offset, length) имеет точно такой же эффект, как следующий цикл, за исключением того, что сначала проверяется согласованность переданных параметров, а сам метод потенциально намного эффективнее:

    for (int i = offset, j = index; i < offset + length; i++, j++)
        dst.put(j, src[i]);
Параметры:
index — индекс в этом буфере, по которому будет записан первый символ char; должен быть неотрицательным и меньше limit()
src — массив, из которого считываются символы
offset — смещение в массиве первого считываемого символа char; должно быть неотрицательным и меньше src.length
length — количество символов char для считывания из указанного массива; должно быть неотрицательным и не превышать меньшее из значений limit() - index и src.length - offset
Возвращает:
Этот буфер
Исключения:
IndexOutOfBoundsException — если не выполняются предварительные условия для параметров index, offset и length
ReadOnlyBufferException — если этот буфер доступен только для чтения
Начиная с версии:
13

put

public CharBuffer put(int index, char[] src)
Абсолютный метод put для пакетной записи (необязательная операция).

Этот метод копирует символы из указанного исходного массива в этот буфер. Позиция этого буфера не изменяется. Вызов этого метода в форме dst.put(index, src) работает точно так же, как вызов:

    dst.put(index, src, 0, src.length);
Параметры:
index — индекс в этом буфере, по которому будет записан первый символ char; должен быть неотрицательным и меньше limit()
src — массив, из которого считываются символы
Возвращает:
Этот буфер
Исключения:
IndexOutOfBoundsException — если index отрицательно, не меньше limit() или limit() - index < src.length
ReadOnlyBufferException — если этот буфер доступен только для чтения
Начиная с версии:
13

put

public CharBuffer put(String src, int start, int end)
Относительный метод put для пакетной записи (необязательная операция).

Этот метод переносит символы из указанной строки в этот буфер. Если из строки требуется скопировать больше символов, чем осталось в этом буфере, то есть если end - start > remaining(), символы не переносятся и выбрасывается исключение BufferOverflowException.

В противном случае этот метод копирует n = end - start символов из указанной строки в этот буфер, начиная с указанного индекса start и текущей позиции этого буфера. Затем позиция этого буфера увеличивается на n.

Иными словами, вызов этого метода в форме dst.put(src, start, end) имеет точно такой же эффект, как цикл

    for (int i = start; i < end; i++)
        dst.put(src.charAt(i));
за исключением того, что сначала проверяется наличие в этом буфере достаточного свободного места, а сам метод потенциально намного эффективнее.
Параметры:
src — строка, из которой считываются символы
start — смещение в строке первого считываемого символа; должно быть неотрицательным и не превышать string.length()
end — смещение в строке символа, следующего за последним считываемым символом; должно быть неотрицательным и не превышать string.length()
Возвращает:
Этот буфер
Исключения:
BufferOverflowException — если в этом буфере недостаточно места
IndexOutOfBoundsException — если не выполняются предварительные условия для параметров start и end
ReadOnlyBufferException — если этот буфер доступен только для чтения

put

public final CharBuffer put(String src)
Относительный метод put для пакетной записи (необязательная операция).

Этот метод переносит все содержимое указанной исходной строки в этот буфер. Вызов этого метода в форме dst.put(s) работает точно так же, как вызов

    dst.put(s, 0, s.length())
Параметры:
src — исходная строка
Возвращает:
Этот буфер
Исключения:
BufferOverflowException — если в этом буфере недостаточно места
ReadOnlyBufferException — если этот буфер доступен только для чтения

hasArray

public final boolean hasArray()
Определяет, поддерживается ли этот буфер доступным массивом char.

Если этот метод возвращает true, методы array и arrayOffset можно безопасно вызывать.

Указано в:
hasArray в классе Buffer
Возвращает:
true тогда и только тогда, когда этот буфер поддерживается массивом и не является буфером только для чтения

array

public final char[] array()
Возвращает массив char, на котором основан этот буфер (необязательная операция).

Изменения содержимого этого буфера приводят к изменению содержимого возвращаемого массива, и наоборот.

Перед вызовом этого метода вызовите метод hasArray, чтобы убедиться, что у этого буфера есть доступный базовый массив.

Указано в:
array в классе Buffer
Возвращает:
Массив, на котором основан этот буфер
Выбрасывает:
ReadOnlyBufferException - Если этот буфер поддерживается массивом, но доступен только для чтения
UnsupportedOperationException - Если этот буфер не поддерживается доступным массивом

arrayOffset

public final int arrayOffset()
Возвращает смещение первого элемента буфера в базовом массиве (необязательная операция).

Если этот буфер поддерживается массивом, то позиция буфера p соответствует индексу массива p + arrayOffset().

Перед вызовом этого метода вызовите метод hasArray, чтобы убедиться, что у этого буфера есть доступный базовый массив.

Указано в:
arrayOffset в классе Buffer
Возвращает:
Смещение первого элемента буфера в его массиве
Выбрасывает:
ReadOnlyBufferException - Если этот буфер поддерживается массивом, но доступен только для чтения
UnsupportedOperationException - Если этот буфер не поддерживается доступным массивом

position

public final CharBuffer position(int newPosition)
Устанавливает позицию этого буфера. Если метка установлена и ее значение больше новой позиции, она сбрасывается.
Переопределяет:
position в классе Buffer
Параметры:
newPosition - Новое значение позиции; должно быть неотрицательным и не превышать текущий предел
Возвращает:
Этот буфер
Начиная с версии:
9

limit

public final CharBuffer limit(int newLimit)
Устанавливает предел этого буфера. Если позиция больше нового предела, она устанавливается равной новому пределу. Если метка установлена и ее значение больше нового предела, она сбрасывается.
Переопределяет:
limit в классе Buffer
Параметры:
newLimit - Новое значение предела; должно быть неотрицательным и не превышать емкость этого буфера
Возвращает:
Этот буфер
Начиная с версии:
9

mark

public final CharBuffer mark()
Устанавливает метку этого буфера в его текущей позиции.
Переопределяет:
mark в классе Buffer
Возвращает:
Этот буфер
Начиная с версии:
9

reset

public final CharBuffer reset()
Возвращает позицию этого буфера к ранее отмеченной позиции.

Вызов этого метода не изменяет и не сбрасывает значение метки.

Переопределяет:
reset в классе Buffer
Возвращает:
Этот буфер
Начиная с версии:
9

clear

public final CharBuffer clear()
Очищает этот буфер. Позиция устанавливается в ноль, предел устанавливается равным емкости, а метка сбрасывается.

Вызовите этот метод перед заполнением буфера последовательностью операций чтения из канала или операций put. Например:

    buf.clear();     // Prepare buffer for reading
    in.read(buf);    // Read data

Этот метод фактически не стирает данные в буфере, но называется так, как если бы он это делал, поскольку чаще всего используется в ситуациях, когда это не имеет значения.

Переопределяет:
clear в классе Buffer
Возвращает:
Этот буфер
Начиная с версии:
9

flip

public final CharBuffer flip()
Переводит этот буфер в режим чтения. Предел устанавливается равным текущей позиции, после чего позиция устанавливается в ноль. Если метка установлена, она сбрасывается.

После последовательности операций чтения из канала или операций put вызовите этот метод, чтобы подготовиться к последовательности операций записи в канал или относительных операций get. Например:

    buf.put(magic);    // Prepend header
    in.read(buf);      // Read data into rest of buffer
    buf.flip();        // Flip buffer
    out.write(buf);    // Write header + data to channel

Этот метод часто используется совместно с методом compact при передаче данных из одного места в другое.

Переопределяет:
flip в классе Buffer
Возвращает:
Этот буфер
Начиная с версии:
9

rewind

public final CharBuffer rewind()
Перематывает этот буфер. Позиция устанавливается в ноль, а метка сбрасывается.

Вызовите этот метод перед последовательностью операций записи в канал или операций get, предполагая, что предел уже установлен соответствующим образом. Например:

    out.write(buf);    // Write remaining data
    buf.rewind();      // Rewind buffer
    buf.get(array);    // Copy data into array
Переопределяет:
rewind в классе Buffer
Возвращает:
Этот буфер
Начиная с версии:
9

compact

public abstract CharBuffer compact()
Уплотняет этот буфер (необязательная операция).

Символы между текущей позицией буфера и его пределом, если они есть, копируются в начало буфера. То есть символ с индексом p = position() копируется в индекс ноль, символ с индексом p + 1 копируется в индекс один и так далее, пока символ с индексом limit() - 1 не будет скопирован в индекс n = limit() - 1 - p. Затем позиция буфера устанавливается в n+1, а предел — равным емкости. Если метка установлена, она сбрасывается.

Позиция буфера устанавливается равной числу скопированных символов, а не нулю, чтобы сразу после вызова этого метода можно было вызвать другой относительный метод put.

Возвращает:
Этот буфер
Выбрасывает:
ReadOnlyBufferException - Если этот буфер доступен только для чтения

isDirect

public abstract boolean isDirect()
Определяет, является ли этот буфер char прямым.
Указано в:
isDirect в классе Buffer
Возвращает:
true тогда и только тогда, когда этот буфер является прямым

hashCode

public int hashCode()
Возвращает текущий хеш-код этого буфера.

Хеш-код буфера char зависит только от его оставшихся элементов, то есть от элементов начиная с position() и заканчивая элементом с индексом limit() - 1 включительно.

Поскольку хеш-коды буферов зависят от содержимого, не рекомендуется использовать буферы в качестве ключей в хеш-таблицах или аналогичных структурах данных, если не известно, что их содержимое не изменится.

Переопределяет:
hashCode в классе Object
Возвращает:
Текущий хеш-код этого буфера
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(Object)

equals

public boolean equals(Object ob)
Определяет, равен ли этот буфер другому объекту.

Два буфера char равны тогда и только тогда, когда выполняются следующие условия:

  1. Они имеют один и тот же тип элементов;

  2. Они имеют одинаковое число оставшихся элементов;

  3. Две последовательности оставшихся элементов, рассматриваемые независимо от начальных позиций, попарно равны.

Буфер char не равен объекту любого другого типа.

Переопределяет:
equals в классе Object
Параметры:
ob - Объект, с которым сравнивается этот буфер
Возвращает:
true тогда и только тогда, когда этот буфер равен заданному объекту
См. также:
  • Object.hashCode()
  • HashMap

compareTo

public int compareTo(CharBuffer that)
Сравнивает этот буфер с другим.

Два буфера char сравниваются лексикографически по последовательностям оставшихся элементов, независимо от начальной позиции каждой последовательности в соответствующем буфере. Пары элементов char сравниваются так, как если бы был вызван метод Character.compare(char,char).

Буфер char нельзя сравнивать с объектом любого другого типа.

Указано в:
compareTo в интерфейсе Comparable<CharBuffer>
Параметры:
that - объект для сравнения.
Возвращает:
Отрицательное целое число, ноль или положительное целое число, если этот буфер меньше, равен или больше заданного буфера

mismatch

public int mismatch(CharBuffer that)
Находит и возвращает относительный индекс первого несовпадения между этим буфером и заданным буфером. Индекс отсчитывается относительно position каждого буфера и находится в диапазоне от 0 (включительно) до меньшего из значений remaining элементов в каждом буфере (не включая верхнюю границу).

Если у двух буферов есть общий префикс, возвращаемый индекс равен длине общего префикса, и, следовательно, по этому индексу в соответствующих буферах имеется несовпадение. Если один буфер является собственным префиксом другого, возвращаемый индекс равен меньшему из числа оставшихся элементов в каждом буфере, и, следовательно, индекс допустим только для буфера с большим числом оставшихся элементов. В противном случае несовпадений нет.

Параметры:
that - Буфер byte для проверки на несовпадение с этим буфером
Возвращает:
Относительный индекс первого несовпадения между этим и заданным буфером или -1, если несовпадений нет.
Начиная с версии:
11

getChars

public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
Относительный метод массового чтения.

Этот метод переносит srcEnd-srcBegin символов из этого буфера в заданный массив, начиная с индекса position() + srcBegin в этом буфере и со смещения dstBegin в массиве. Позиция этого буфера не изменяется.

Вызов этого метода работает точно так же, как вызов

    get(position() + srcBegin, dst, dstBegin, srcEnd - srcBegin)
Указано в:
getChars в интерфейсе CharSequence
Параметры:
srcBegin - Индекс первого считываемого символа в этом буфере относительно текущей позиции; должен быть неотрицательным и меньше limit() - position()
srcEnd - Индекс в этом буфере относительно текущей позиции, следующий за последним считываемым символом; должен быть больше или равен srcBegin и меньше или равен limit() - position()
dst - Массив назначения
dstBegin - Смещение первого записываемого символа в массиве; должно быть неотрицательным и меньше dst.length
Выбрасывает:
IndexOutOfBoundsException - Если не выполняются предварительные условия для параметров srcBegin, srcEnd и dstBegin
Начиная с версии:
25

toString

public String toString()
Возвращает строку, содержащую символы этого буфера.

Первым символом результирующей строки будет символ в текущей позиции этого буфера, а последним — символ с индексом limit() - 1. Вызов этого метода не изменяет позицию буфера.

Указано в:
toString в интерфейсе CharSequence
Переопределяет:
toString в классе Object
Возвращает:
Указанную строку

length

public final int length()
Возвращает длину этого символьного буфера.

Если рассматривать буфер как последовательность символов, его длина — это число символов между позицией (включительно) и пределом (не включительно); то есть она эквивалентна remaining().

Указано в:
length в интерфейсе CharSequence
Возвращает:
Длина этого символьного буфера

isEmpty

public final boolean isEmpty()
Возвращает true, если этот символьный буфер пуст.
Указано в:
isEmpty в интерфейсе CharSequence
Возвращает:
true, если осталось 0 символов, иначе false
Начиная с версии:
15

charAt

public final char charAt(int index)
Считывает символ по заданному индексу относительно текущей позиции.
Указано в:
charAt в интерфейсе CharSequence
Параметры:
index - Индекс считываемого символа относительно позиции; должен быть неотрицательным и меньше remaining()
Возвращает:
Символ с индексом position() + index
Выбрасывает:
IndexOutOfBoundsException - Если не выполняются предварительные условия для index

subSequence

public abstract CharBuffer subSequence(int start, int end)
Создает новый символьный буфер, представляющий указанную подпоследовательность этого буфера относительно текущей позиции.

Новый буфер будет совместно использовать содержимое этого буфера; то есть, если содержимое этого буфера изменяемо, изменения одного буфера приведут к изменению другого. Емкость нового буфера будет равна емкости этого буфера, его позиция будет равна position() + start, его предел будет равен position() + end, а порядок байтов будет совпадать с порядком байтов этого буфера. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и будет доступен только для чтения тогда и только тогда, когда этот буфер доступен только для чтения.

Указано в:
subSequence в интерфейсе CharSequence
Параметры:
start - Индекс первого символа подпоследовательности относительно текущей позиции; должен быть неотрицательным и не превышать remaining()
end - Индекс символа, следующего за последним символом подпоследовательности, относительно текущей позиции; должен быть не меньше start и не больше remaining()
Возвращает:
Новый символьный буфер
Выбрасывает:
IndexOutOfBoundsException - Если не выполняются предварительные условия для start и end

append

public CharBuffer append(CharSequence csq)
Добавляет указанную последовательность символов в этот буфер (необязательная операция).

Вызов этого метода в форме dst.append(csq) работает точно так же, как вызов

    dst.put(csq.toString())

В зависимости от спецификации toString для последовательности символов csq может быть добавлена не вся последовательность. Например, вызов метода toString символьного буфера вернет подпоследовательность, содержимое которой зависит от позиции и предела буфера.

Указано в:
append в интерфейсе Appendable
Параметры:
csq - Последовательность символов для добавления. Если csq равно null, в этот символьный буфер добавляются четыре символа "null".
Возвращает:
Этот буфер
Выбрасывает:
BufferOverflowException - Если в этом буфере недостаточно места
ReadOnlyBufferException - Если этот буфер доступен только для чтения
Начиная с версии:
1.5

append

public CharBuffer append(CharSequence csq, int start, int end)
Добавляет подпоследовательность указанной последовательности символов в этот буфер (необязательная операция).

Вызов этого метода в форме dst.append(csq, start, end), если csq не равно null, работает точно так же, как вызов

    dst.put(csq.subSequence(start, end).toString())
Указано в:
append в интерфейсе Appendable
Параметры:
csq - Последовательность символов, из которой будет добавлена подпоследовательность. Если csq равно null, символы будут добавлены так, как если бы csq содержал четыре символа "null".
start - Индекс первого символа в подпоследовательности
end - Индекс символа, следующего за последним символом в подпоследовательности
Возвращает:
Этот буфер
Выбрасывает:
BufferOverflowException - Если в этом буфере недостаточно места
IndexOutOfBoundsException - Если start или end отрицательны, start больше end или end больше csq.length()
ReadOnlyBufferException - Если этот буфер доступен только для чтения
Начиная с версии:
1.5

append

public CharBuffer append(char c)
Добавляет указанный символ char в этот буфер (необязательная операция).

Вызов этого метода в форме dst.append(c) работает точно так же, как вызов

    dst.put(c)
Указано в:
append в интерфейсе Appendable
Параметры:
c - 16-битный символ char для добавления
Возвращает:
Этот буфер
Выбрасывает:
BufferOverflowException - Если в этом буфере недостаточно места
ReadOnlyBufferException - Если этот буфер доступен только для чтения
Начиная с версии:
1.5

order

public abstract ByteOrder order()
Получает порядок байтов этого буфера.

Порядок байтов буфера char, созданного выделением памяти или оберткой существующего массива char, соответствует native order базового оборудования. Порядок байтов буфера char, созданного как представление буфера byte, совпадает с порядком байтов буфера byte на момент создания представления.

Возвращает:
Порядок байтов этого буфера

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, которая содержит более подробные описания для разработчиков, включая общие сведения, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API