Класс 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);
Дополнительные операции
Методы, указанные как дополнительные операции, выбрасывают ReadOnlyBufferException при вызове на только для чтения CharBuffer. Методы array и arrayOffset выбрасывают UnsupportedOperationException, если CharBuffer не поддерживает обращение к массиву символов (независимо от того, является ли CharBuffer только для чтения).- С:
- 1.4
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static CharBuffer |
allocate |
Выделяет новый буфер char. |
CharBuffer |
append |
Добавляет указанный символ в этот буфер (необязательная операция). |
CharBuffer |
append |
Добавляет указанную последовательность символов в этот буфер (необязательная операция). |
CharBuffer |
append |
Добавляет подпоследовательность указанной последовательности символов в этот буфер (необязательная операция). |
final char[] |
array() |
Возвращает массив char, поддерживающий этот буфер (необязательная операция). |
final int |
arrayOffset() |
Возвращает смещение внутри поддерживающего массива этого буфера для первого элемента буфера (необязательная операция). |
abstract CharBuffer |
asReadOnlyBuffer() |
Создаёт новый, только для чтения, буфер char, который разделяет содержимое этого буфера. |
final char |
charAt |
Считывает символ по заданному индексу относительно текущей позиции. |
final CharBuffer |
clear() |
Очищает этот буфер. |
abstract CharBuffer |
compact() |
Уплотняет этот буфер (необязательная операция). |
int |
compareTo |
Сравнивает этот буфер с другим. |
abstract CharBuffer |
duplicate() |
Создаёт новый буфер char, который разделяет содержимое этого буфера. |
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 для нескольких элементов. |
final boolean |
hasArray() |
Определяет, поддерживает ли этот буфер доступный массив char. |
int |
hashCode() |
Возвращает текущий хэш-код этого буфера. |
abstract boolean |
isDirect() |
Определяет, является ли этот буфер char прямым. |
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() |
Создаёт новый буфер char, содержащий общую подпоследовательность содержимого этого буфера. |
abstract CharBuffer |
slice |
Создаёт новый буфер char, содержащий общую подпоследовательность содержимого этого буфера. |
abstract CharBuffer |
subSequence |
Создаёт новый буфер символов, представляющий указанную подпоследовательность этого буфера, относительно текущей позиции. |
String |
toString() |
Возвращает строку, содержащую символы в этом буфере. |
static CharBuffer |
wrap |
Оборачивает массив char в буфер. |
static CharBuffer |
wrap |
Оборачивает массив char в буфер. |
static CharBuffer |
wrap |
Оборачивает последовательность символов в буфер. |
static CharBuffer |
wrap |
Оборачивает последовательность символов в буфер. |
Методы, объявленные в классе java.nio.Buffer
capacity, hasRemaining, isReadOnly, limit, position, remaining
Методы, объявленные в классе java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе java.lang.CharSequence
chars, codePoints
Подробности методов
allocate
public static CharBuffer allocate(int capacity)
Позиция нового буфера будет равна нулю, его предел — его ёмкость, отметка будет неопределённой, каждый его элемент будет инициализирован нулём, а порядок байтов будет соответствовать native order базового оборудования. Он будет иметь backing array, а его array offset будет равен нулю.
- Параметры:
-
capacity— ёмкость нового буфера в символах - Возвращает:
- Новый буфер char
- Исключения:
-
IllegalArgumentException— если ёмкость — отрицательное число
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)
Записывает заданный символ в этот буфер по текущей позиции, а затем увеличивает позицию.
- Параметры:
-
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)
предел
public final CharBuffer limit(int newLimit)
метка
сброс
очистка
public final CharBuffer clear()
Вызовите этот метод перед использованием последовательности операций чтения канала или операций put для заполнения этого буфера. Например:
buf.clear(); // Prepare buffer for reading
in.read(buf); // Read data
Этот метод фактически не стирает данные в буфере, но он назван так, как будто это так, потому что чаще всего он используется в ситуациях, когда это было бы вполне уместно.
переворот
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 при передаче данных из одного места в другое.
перемотка
public final CharBuffer rewind()
Вызовите этот метод перед последовательностью операций записи канала или операций get, предполагая, что предел уже установлен соответствующим образом. Например:
out.write(buf); // Write remaining data
buf.rewind(); // Rewind buffer
buf.get(array); // Copy data into array
уплотнение
public abstract CharBuffer compact()
Символы между текущей позицией буфера и его пределом, если таковые имеются, копируются в начало буфера. То есть символ с индексом p = position() копируется в индекс ноль, символ с индексом p + 1 копируется в индекс один и так далее, до символа с индексом limit() - 1, который копируется в индекс n = limit() - 1 - p. Позиция буфера затем устанавливается в n+1, а его предел устанавливается на его емкость. Метка, если определена, отбрасывается.
Позиция буфера устанавливается на количество скопированных символов, а не на ноль, чтобы вызов этого метода можно было сразу последовать вызовом другого относительного метода put.
- Возвращает:
- Этот буфер
- Исключение:
-
ReadOnlyBufferException- Если этот буфер является только для чтения
являетсяПрямым
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
toString
public String toString()
Первый символ результирующей строки будет символом в позиции этого буфера, а последний символ будет символом с индексом limit() - 1. Вызов этого метода не изменяет позицию буфера.
- Определяется:
-
toStringв интерфейсеCharSequence - Переопределяет:
-
toStringв классеObject - Возвращает:
- Указанная строка
длина
public final int length()
При представлении в виде последовательности символов, длина символьного буфера просто равна количеству символов между позицией (включительно) и пределом (исключая); то есть она эквивалентна remaining().
- Определяется:
-
lengthв интерфейсеCharSequence - Возвращает:
- Длина этого символьного буфера
пусто
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-битовое значение) для добавления - Возвращает:
- Этот буфер
- Исключения:
-
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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/nio/CharBuffer.html