Класс 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, которые передают непрерывные последовательности символов из массива символов, строки или другого буфера символов в этот буфер;Метод для
compactingбуфера символов.
Буферы символов можно создать с помощью метода allocation, который выделяет место для содержимого буфера, поместив существующий массив символов или строку в буфер с помощью метода wrapping либо создав представление существующего байтового буфера.
Как и байтовый буфер, буфер символов может быть прямым или непрямым. Буфер символов, созданный с помощью методов 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 не поддерживается доступным массивом символов (независимо от того, является ли CharBuffer буфером только для чтения).- Начиная с версии:
- 1.4
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static CharBuffer |
allocate |
Выделяет новый буфер символов. |
CharBuffer |
append |
Добавляет указанный символ в этот буфер (необязательная операция). |
CharBuffer |
append |
Добавляет указанную символьную последовательность в этот буфер (необязательная операция). |
CharBuffer |
append |
Добавляет подстроку указанной символьной последовательности в этот буфер (необязательная операция). |
final char[] |
array() |
Возвращает массив символов, на основе которого создан этот буфер (необязательная операция). |
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() |
Определяет, поддерживается ли этот буфер доступным массивом символов. |
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 |
Помещает массив символов в буфер. |
static CharBuffer |
wrap |
Помещает массив символов в буфер. |
static CharBuffer |
wrap |
Помещает символьную последовательность в буфер. |
static CharBuffer |
wrap |
Помещает символьную последовательность в буфер. |
Методы, объявленные в классе Buffer
capacity, hasRemaining, isReadOnly, limit, position, remaining
Методы, объявленные в интерфейсе CharSequence
chars, codePoints
Подробное описание методов
allocate
public static CharBuffer allocate(int capacity)
Позиция нового буфера будет равна нулю, его предел будет равен его емкости, его отметка будет неопределена, каждый его элемент будет инициализирован нулем, а порядок байтов будет соответствовать native order базового оборудования. У него будет backing array, а его array offset будет равен нулю.
- Параметры:
-
capacity— емкость нового буфера в символах - Возвращает:
- Новый символьный буфер
- Исключения:
-
IllegalArgumentException— еслиcapacityявляется отрицательным целым числом
wrap
public static CharBuffer wrap(char[] array, int offset, int length)
Новый буфер будет основан на заданном массиве символов; то есть изменения буфера будут приводить к изменению массива, и наоборот. Емкость нового буфера будет равна array.length, его позиция будет равна offset, его предел будет равен offset + length, его отметка будет неопределена, а порядок байтов будет соответствовать native order базового оборудования. Его backing array будет заданным массивом, а его array offset будет равен нулю.
- Параметры:
-
array— массив, на основе которого будет создан новый буфер -
offset— смещение используемого подмассива; должно быть неотрицательным и не превышатьarray.length. Позиция нового буфера будет установлена в это значение. -
length— длина используемого подмассива; должна быть неотрицательной и не превышатьarray.length - offset. Предел нового буфера будет установлен вoffset + length. - Возвращает:
- Новый символьный буфер
- Исключения:
-
IndexOutOfBoundsException— если не выполняются предусловия для параметровoffsetиlength
wrap
public static CharBuffer wrap(char[] array)
Новый буфер будет основан на заданном массиве символов; то есть изменения буфера будут приводить к изменению массива, и наоборот. Емкость и предел нового буфера будут равны array.length, его позиция будет равна нулю, его отметка будет неопределена, а порядок байтов будет соответствовать native order базового оборудования. Его backing array будет заданным массивом, а его array offset будет равен нулю.
- Параметры:
-
array— массив, на основе которого будет создан этот буфер - Возвращает:
- Новый символьный буфер
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.
- Возвращает:
- Новый символьный буфер, доступный только для чтения
get
public abstract char get()
- Возвращает:
- Символ в текущей позиции буфера
- Исключения:
-
BufferUnderflowException— если текущая позиция буфера не меньше его предела
put
public abstract CharBuffer put(char c)
Записывает заданный символ в этот буфер в текущей позиции, а затем увеличивает позицию.
- Параметры:
-
c— записываемый символ - Возвращает:
- Этот буфер
- Исключения:
-
BufferOverflowException— если текущая позиция этого буфера не меньше его предела -
ReadOnlyBufferException— если этот буфер доступен только для чтения
get
public abstract char get(int index)
- Параметры:
-
index— индекс, по которому будет считан символ - Возвращает:
- Символ по заданному индексу
- Исключения:
-
IndexOutOfBoundsException— еслиindexотрицательно или не меньше предела буфера
put
public abstract CharBuffer put(int index, char c)
Записывает заданный символ в этот буфер по заданному индексу.
- Параметры:
-
index— индекс, по которому будет записан символ -
c— записываемое значение символа - Возвращает:
- Этот буфер
- Исключения:
-
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— индекс в этом буфере, с которого будет считан первый символ; должен быть неотрицательным и меньшеlimit() -
dst— массив назначения -
offset— смещение в массиве первого записываемого символа; должно быть неотрицательным и меньшеdst.length -
length— количество символов для записи в заданный массив; должно быть неотрицательным и не превышать меньшее из значений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— индекс в этом буфере, с которого будет считан первый символ; должен быть неотрицательным и меньше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— индекс в этом буфере, по которому будет записан первый символ; должен быть неотрицательным и меньшеlimit() -
src— буфер, из которого будут считываться символы -
offset— индекс в исходном буфере, с которого будет считан первый символ; должен быть неотрицательным и меньшеsrc.limit() -
length— количество символов, считываемых из заданного буфера; должно быть неотрицательным и не превышать меньшее из значений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)
Этот метод передает все содержимое заданного исходного массива символов в этот буфер. Вызов этого метода в форме 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— индекс в этом буфере, по которому будет записан первый символ; должен быть неотрицательным и меньшеlimit() -
src— массив, из которого будут считываться символы -
offset— смещение в массиве первого считываемого символа; должно быть неотрицательным и меньшеsrc.length -
length— количество символов, считываемых из заданного массива; должно быть неотрицательным и не превышать меньшее из значений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— индекс в этом буфере, по которому будет записан первый символ; должен быть неотрицательным и меньше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()
Хеш-код буфера символов зависит только от оставшихся в нём элементов, то есть от элементов от position() до элемента с индексом limit() - 1 включительно.
Поскольку хеш-коды буферов зависят от их содержимого, не рекомендуется использовать буферы в качестве ключей в хеш-таблицах и аналогичных структурах данных, если только известно, что их содержимое не изменится.
equals
public boolean equals(Object ob)
Два буфера символов равны тогда и только тогда, когда выполняются следующие условия:
Они имеют одинаковый тип элементов;
Они содержат одинаковое количество оставшихся элементов;
Последовательности оставшихся элементов попарно равны независимо от начальных позиций.
Буфер символов не равен объектам других типов.
compareTo
public int compareTo(CharBuffer that)
Буферы символов сравниваются лексикографически по последовательностям оставшихся элементов без учёта начальной позиции каждой последовательности в соответствующем буфере. Пары элементов типа char сравниваются так, как если бы вызывался метод Character.compare(char,char).
Буфер символов нельзя сравнивать с объектами других типов.
- Определено в:
-
compareToв интерфейсеComparable<CharBuffer> - Параметры:
-
that— объект для сравнения. - Возвращает:
- Отрицательное целое число, ноль или положительное целое число, если этот буфер меньше, равен или больше указанного буфера соответственно
mismatch
public int mismatch(CharBuffer that)
position каждого буфера и находится в диапазоне от 0 (включительно) до меньшего из количеств элементов remaining в каждом буфере (не включительно). Если у двух буферов есть общий префикс, возвращаемый индекс равен длине общего префикса, а значит, по этому индексу в соответствующих буферах обнаруживается несовпадение. Если один буфер является собственным префиксом другого, возвращаемый индекс равен меньшему из количеств оставшихся элементов в каждом буфере, и этот индекс допустим только для буфера с большим количеством оставшихся элементов. В противном случае несовпадений нет.
- Параметры:
-
that— буфер байтов для проверки на несовпадение с этим буфером - Возвращает:
- Относительный индекс первого несовпадения между этим и заданным буферами либо -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, совпадает с native order базового оборудования. Порядок байтов буфера символов, созданного как представление буфера байтов, совпадает с порядком байтов буфера байтов на момент создания представления.
- Возвращает:
- Порядок байтов этого буфера
© 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/nio/CharBuffer.html