Класс 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 |
Выделяет новый символьный буфер. |
CharBuffer |
append |
Добавляет указанный символ в этот буфер (необязательная операция). |
CharBuffer |
append |
Добавляет указанную последовательность символов в этот буфер (необязательная операция). |
CharBuffer |
append |
Добавляет подпоследовательность указанной последовательности символов в этот буфер (необязательная операция). |
final char[] |
array() |
Возвращает массив char, на основе которого создан этот буфер (необязательная операция). |
final int |
arrayOffset() |
Возвращает смещение первого элемента буфера относительно массива, на основе которого создан этот буфер (необязательная операция). |
abstract CharBuffer |
asReadOnlyBuffer() |
Создаёт новый доступный только для чтения символьный буфер, совместно использующий содержимое этого буфера. |
final char |
charAt |
Считывает символ по указанному индексу относительно текущей позиции. |
final CharBuffer |
clear() |
Очищает этот буфер. |
abstract CharBuffer |
compact() |
Уплотняет этот буфер (необязательная операция). |
int |
compareTo |
Сравнивает этот буфер с другим. |
abstract CharBuffer |
duplicate() |
Создаёт новый символьный буфер, совместно использующий содержимое этого буфера. |
boolean |
equals |
Определяет, равен ли этот буфер другому объекту. |
final CharBuffer |
flip() |
Переворачивает этот буфер. |
abstract char |
get() |
Относительный метод get. |
CharBuffer |
get |
Относительный пакетный метод get. |
CharBuffer |
get |
Относительный пакетный метод get. |
abstract char |
get |
Абсолютный метод get. |
CharBuffer |
get |
Абсолютный пакетный метод get. |
CharBuffer |
get |
Абсолютный пакетный метод get. |
void |
getChars |
Относительный пакетный метод get. |
final boolean |
hasArray() |
Определяет, поддерживается ли этот буфер доступным массивом char. |
int |
hashCode() |
Возвращает текущий хеш-код этого буфера. |
abstract boolean |
isDirect() |
Определяет, является ли этот символьный буфер прямым. |
final boolean |
isEmpty() |
Возвращает true, если этот символьный буфер пуст. |
final int |
length() |
Возвращает длину этого символьного буфера. |
final CharBuffer |
limit |
Устанавливает предел этого буфера. |
final CharBuffer |
mark() |
Устанавливает отметку буфера на его текущей позиции. |
int |
mismatch |
Находит и возвращает относительный индекс первого несовпадения этого буфера с заданным буфером. |
abstract ByteOrder |
order() |
Возвращает порядок байтов этого буфера. |
final CharBuffer |
position |
Устанавливает позицию этого буфера. |
abstract CharBuffer |
put |
Относительный метод put (необязательная операция). |
final CharBuffer |
put |
Относительный пакетный метод put (необязательная операция). |
CharBuffer |
put |
Относительный пакетный метод put (необязательная операция). |
abstract CharBuffer |
put |
Абсолютный метод put (необязательная операция). |
CharBuffer |
put |
Абсолютный пакетный метод put (необязательная операция). |
CharBuffer |
put |
Абсолютный пакетный метод put (необязательная операция). |
CharBuffer |
put |
Абсолютный пакетный метод put (необязательная операция). |
final CharBuffer |
put |
Относительный пакетный метод put (необязательная операция). |
CharBuffer |
put |
Относительный пакетный метод put (необязательная операция). |
CharBuffer |
put |
Относительный пакетный метод put (необязательная операция). |
int |
read |
Пытается считать символы в указанный символьный буфер. |
final CharBuffer |
reset() |
Возвращает позицию этого буфера к ранее установленной отметке. |
final CharBuffer |
rewind() |
Перематывает этот буфер в начало. |
abstract CharBuffer |
slice() |
Создаёт новый символьный буфер, содержимое которого является общей подпоследовательностью содержимого этого буфера. |
abstract CharBuffer |
slice |
Создаёт новый символьный буфер, содержимое которого является общей подпоследовательностью содержимого этого буфера. |
abstract CharBuffer |
subSequence |
Создаёт новый символьный буфер, представляющий указанную подпоследовательность этого буфера относительно текущей позиции. |
String |
toString() |
Возвращает строку, содержащую символы этого буфера. |
static CharBuffer |
wrap |
Оборачивает массив char в буфер. |
static CharBuffer |
wrap |
Оборачивает массив char в буфер. |
static CharBuffer |
wrap |
Оборачивает последовательность символов в буфер. |
static CharBuffer |
wrap |
Оборачивает последовательность символов в буфер. |
Методы, объявленные в классе 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 |
Заставляет текущий поток ждать пробуждения, обычно вследствие уведомления или прерывания, либо истечения определённого интервала реального времени. |
final void |
wait |
Заставляет текущий поток ждать пробуждения, обычно вследствие уведомления или прерывания, либо истечения определённого интервала реального времени. |
Методы, объявленные в интерфейсе CharSequence
chars, codePoints | Модификатор и тип | Метод | Описание |
|---|---|---|
default IntStream |
chars() |
Возвращает поток значений int, расширяющий нулями значения char этой последовательности. |
default IntStream |
codePoints() |
Возвращает поток значений кодовых точек этой последовательности. |
Подробное описание методов
allocate
public static CharBuffer allocate(int capacity)
Позиция нового буфера будет равна нулю, его предел будет равен его емкости, его отметка будет не определена, каждый его элемент будет инициализирован нулем, а порядок байтов будет соответствовать native order используемому аппаратным обеспечением. Буфер будет иметь backing array, а его array offset будет равен нулю.
- Параметры:
-
capacity— емкость нового буфера, в символах - Возвращает:
- Новый буфер char
- Исключения:
-
IllegalArgumentException— еслиcapacityявляется отрицательным целым числом
wrap
public static CharBuffer wrap(char[] array, int offset, int length)
Новый буфер будет опираться на указанный массив 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; то есть изменения буфера будут изменять массив, и наоборот. Емкость и предел нового буфера будут равны array.length, его позиция будет равна нулю, его отметка будет не определена, а порядок байтов будет соответствовать native order используемому аппаратным обеспечением. Его backing array будет указанным массивом, а его array offset будет равен нулю.
- Параметры:
-
array— массив, на который будет опираться этот буфер - Возвращает:
- Новый буфер char
read
public int read(CharBuffer target) throws IOException
- Определено в:
-
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()
Содержимое нового буфера будет начинаться с текущей позиции этого буфера. Изменения содержимого этого буфера будут видны в новом буфере, и наоборот; значения позиции, предела и отметки двух буферов будут независимыми.
Позиция нового буфера будет равна нулю, его емкость и предел будут равны количеству оставшихся в этом буфере символов, его отметка будет не определена, а порядок байтов будет идентичен порядку байтов этого буфера. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и будет доступен только для чтения тогда и только тогда, когда этот буфер доступен только для чтения.
slice
public abstract CharBuffer slice(int index, int length)
Содержимое нового буфера будет начинаться с позиции index в этом буфере и включать length элементов. Изменения содержимого этого буфера будут видны в новом буфере, и наоборот; значения позиции, предела и отметки двух буферов будут независимыми.
Позиция нового буфера будет равна нулю, его емкость и предел будут равны length, его отметка будет не определена, а порядок байтов будет идентичен порядку байтов этого буфера. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и будет доступен только для чтения тогда и только тогда, когда этот буфер доступен только для чтения.
- Определено в:
-
sliceв классеBuffer - Параметры:
-
index— позиция в этом буфере, с которой будет начинаться содержимое нового буфера; должна быть неотрицательной и не превышатьlimit() -
length— количество элементов в новом буфере; должно быть неотрицательным и не превышатьlimit() - index - Возвращает:
- Новый буфер
- Исключения:
-
IndexOutOfBoundsException— еслиindexотрицательно или большеlimit(),lengthотрицательно илиlength > limit() - index - Начиная с версии:
- 13
duplicate
public abstract CharBuffer duplicate()
Содержимое нового буфера будет совпадать с содержимым этого буфера. Изменения содержимого этого буфера будут видны в новом буфере, и наоборот; значения позиции, предела и отметки двух буферов будут независимыми.
Емкость, предел, позиция, значение отметки и порядок байтов нового буфера будут идентичны соответствующим значениям этого буфера. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и будет доступен только для чтения тогда и только тогда, когда этот буфер доступен только для чтения.
asReadOnlyBuffer
public abstract CharBuffer asReadOnlyBuffer()
Содержимое нового буфера будет совпадать с содержимым этого буфера. Изменения содержимого этого буфера будут видны в новом буфере; однако сам новый буфер будет доступен только для чтения и не позволит изменять общее содержимое. Значения позиции, предела и отметки двух буферов будут независимыми.
Емкость, предел, позиция, значение отметки и порядок байтов нового буфера будут идентичны соответствующим значениям этого буфера.
Если этот буфер сам доступен только для чтения, данный метод работает точно так же, как метод duplicate.
- Возвращает:
- Новый буфер char, доступный только для чтения
get
public abstract char get()
- Возвращает:
- Символ char в текущей позиции буфера
- Исключения:
-
BufferUnderflowException— если текущая позиция буфера не меньше его предела
put
public abstract CharBuffer put(char c)
Записывает указанный символ char в этот буфер в текущей позиции, а затем увеличивает позицию.
- Параметры:
-
c— записываемый символ char - Возвращает:
- Этот буфер
- Исключения:
-
BufferOverflowException— если текущая позиция этого буфера не меньше его предела -
ReadOnlyBufferException— если этот буфер доступен только для чтения
get
public abstract char get(int index)
- Параметры:
-
index— индекс, по которому будет считан символ char - Возвращает:
- Символ char по указанному индексу
- Исключения:
-
IndexOutOfBoundsException— еслиindexотрицательно или не меньше предела буфера
put
public abstract CharBuffer put(int index, char c)
Записывает указанный символ char в этот буфер по указанному индексу.
- Параметры:
-
index— индекс, по которому будет записан символ char -
c— записываемое значение char - Возвращает:
- Этот буфер
- Исключения:
-
IndexOutOfBoundsException— еслиindexотрицательно или не меньше предела буфера -
ReadOnlyBufferException— если этот буфер доступен только для чтения
get
public CharBuffer get(char[] dst, int offset, int length)
Этот метод переносит символы из данного буфера в указанный массив назначения. Если в буфере осталось меньше символов, чем требуется для выполнения запроса, то есть если 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)
Этот метод переносит символы из данного буфера в указанный массив назначения. Вызов этого метода в форме src.get(a) работает точно так же, как вызов
src.get(a, 0, a.length)
- Параметры:
-
dst— массив назначения - Возвращает:
- Этот буфер
- Исключения:
-
BufferUnderflowException— если в этом буфере осталось меньшеlengthсимволов
get
public CharBuffer get(int index, char[] dst, int offset, int length)
Этот метод переносит 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)
Этот метод переносит символы из этого буфера в указанный массив назначения. Позиция этого буфера не изменяется. Вызов этого метода в форме 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)
Этот метод переносит оставшиеся символы из указанного исходного буфера в этот буфер. Если в исходном буфере осталось больше символов, чем в этом буфере, то есть если 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)
Этот метод переносит 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)
Этот метод переносит символы из указанного исходного массива в этот буфер. Если из массива требуется скопировать больше символов, чем осталось в этом буфере, то есть если 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)
Этот метод переносит все содержимое указанного исходного массива 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)
Этот метод переносит 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)
Этот метод копирует символы из указанного исходного массива в этот буфер. Позиция этого буфера не изменяется. Вызов этого метода в форме 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)
Этот метод переносит символы из указанной строки в этот буфер. Если из строки требуется скопировать больше символов, чем осталось в этом буфере, то есть если 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)
Этот метод переносит все содержимое указанной исходной строки в этот буфер. Вызов этого метода в форме dst.put(s) работает точно так же, как вызов
dst.put(s, 0, s.length())
- Параметры:
-
src— исходная строка - Возвращает:
- Этот буфер
- Исключения:
-
BufferOverflowException— если в этом буфере недостаточно места -
ReadOnlyBufferException— если этот буфер доступен только для чтения
hasArray
public final boolean hasArray()
Если этот метод возвращает true, методы array и arrayOffset можно безопасно вызывать.
array
public final char[] array()
Изменения содержимого этого буфера приводят к изменению содержимого возвращаемого массива, и наоборот.
Перед вызовом этого метода вызовите метод 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)
limit
public final CharBuffer limit(int newLimit)
mark
reset
clear
public final CharBuffer clear()
Вызовите этот метод перед заполнением буфера последовательностью операций чтения из канала или операций put. Например:
buf.clear(); // Prepare buffer for reading
in.read(buf); // Read data
Этот метод фактически не стирает данные в буфере, но называется так, как если бы он это делал, поскольку чаще всего используется в ситуациях, когда это не имеет значения.
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 при передаче данных из одного места в другое.
rewind
public final CharBuffer rewind()
Вызовите этот метод перед последовательностью операций записи в канал или операций get, предполагая, что предел уже установлен соответствующим образом. Например:
out.write(buf); // Write remaining data
buf.rewind(); // Rewind buffer
buf.get(array); // Copy data into array
compact
public abstract CharBuffer compact()
Символы между текущей позицией буфера и его пределом, если они есть, копируются в начало буфера. То есть символ с индексом p = position() копируется в индекс ноль, символ с индексом p + 1 копируется в индекс один и так далее, пока символ с индексом limit() - 1 не будет скопирован в индекс n = limit() - 1 - p. Затем позиция буфера устанавливается в n+1, а предел — равным емкости. Если метка установлена, она сбрасывается.
Позиция буфера устанавливается равной числу скопированных символов, а не нулю, чтобы сразу после вызова этого метода можно было вызвать другой относительный метод put.
- Возвращает:
- Этот буфер
- Выбрасывает:
-
ReadOnlyBufferException- Если этот буфер доступен только для чтения
isDirect
hashCode
public int hashCode()
Хеш-код буфера char зависит только от его оставшихся элементов, то есть от элементов начиная с position() и заканчивая элементом с индексом limit() - 1 включительно.
Поскольку хеш-коды буферов зависят от содержимого, не рекомендуется использовать буферы в качестве ключей в хеш-таблицах или аналогичных структурах данных, если не известно, что их содержимое не изменится.
equals
public boolean equals(Object ob)
Два буфера char равны тогда и только тогда, когда выполняются следующие условия:
Они имеют один и тот же тип элементов;
Они имеют одинаковое число оставшихся элементов;
Две последовательности оставшихся элементов, рассматриваемые независимо от начальных позиций, попарно равны.
Буфер char не равен объекту любого другого типа.
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)
Вызов этого метода в форме 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 на момент создания представления.
- Возвращает:
- Порядок байтов этого буфера
© 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.