Spec-Zone.ru › OpenJDK 21

Класс CharBuffer

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

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

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

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

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

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

Методы, объявленные в классе 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)
Выделяет новый буфер char.

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

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

wrap

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

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

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

wrap

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

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

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

read

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

wrap

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

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

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

wrap

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

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

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

slice

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

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

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

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

slice

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

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

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

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

duplicate

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

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

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

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

asReadOnlyBuffer

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

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

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

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

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

get

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

put

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

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

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

get

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

put

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

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

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

get

public CharBuffer get(char[] dst, int offset, int length)
Метод get относительного пакетного доступа.

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

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

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

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

get

public CharBuffer get(char[] dst)
Метод get относительного пакетного доступа.

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

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

get

public CharBuffer get(int index, char[] dst, int offset, int length)
Метод get абсолютного пакетного доступа.

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

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

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

get

public CharBuffer get(int index, char[] dst)
Метод get абсолютного пакетного доступа.

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

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

put

public CharBuffer put(CharBuffer src)
Метод put относительного пакетного доступа (необязательная операция).

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

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

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

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

put

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

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

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

    for (int i = offset, j = index; i < offset + length; i++, j++)
        dst.put(j, src.get(i));
за исключением того, что он сначала проверяет непротиворечивость параметров и потенциально может быть более эффективным. Если этот буфер и буфер источника используют один и тот же массив или память, то результат будет таким же, как если бы элементы источника были сначала скопированы во временное местоположение, прежде чем быть записанными в этот буфер.
Параметры:
index - Индекс в этом буфере, по которому будет записан первый символ; должен быть неотрицательным и меньше 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)
Относительный метод put для блочных операций (необязательная операция).

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

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

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

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

put

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

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

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

put

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

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

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

    for (int i = offset, j = index; i < offset + length; i++, j++)
        dst.put(j, src[i]);
Параметры:
index - Индекс в этом буфере, с которого будет записан первый символ; должен быть неотрицательным и меньше 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)
Абсолютный метод put для блочных операций (необязательная операция).

Этот метод копирует символы в этот буфер из заданного исходного массива. Позиция этого буфера не изменяется. Вызов этого метода в форме 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)
Относительный метод put для блочных операций (необязательная операция).

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

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

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

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

put

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

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

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

hasArray

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

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

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

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)
Устанавливает позицию этого буфера. Если метка определена и больше новой позиции, то она отбрасывается.
Переопределяет:
position в классе Buffer
Параметры:
newPosition - Новое значение позиции; должно быть неотрицательным и не больше текущего предела
Возвращает:
Этот буфер
С:
9

limit

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

mark

public final CharBuffer mark()
Устанавливает метку этого буфера в текущей позиции.
Overrides:
mark in class Buffer
Returns:
Этот буфер
Since:
9

reset

public final CharBuffer reset()
Сбрасывает позицию этого буфера до ранее помеченной позиции.

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

Overrides:
reset in class Buffer
Returns:
Этот буфер
Since:
9

clear

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

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

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

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

Overrides:
clear in class Buffer
Returns:
Этот буфер
Since:
9

flip

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

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

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

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

Overrides:
flip in class Buffer
Returns:
Этот буфер
Since:
9

rewind

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

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

    out.write(buf);    // Write remaining data
    buf.rewind();      // Rewind buffer
    buf.get(array);    // Copy data into array
Overrides:
rewind in class Buffer
Returns:
Этот буфер
Since:
9

compact

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

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

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

Returns:
Этот буфер
Throws:
ReadOnlyBufferException - Если этот буфер только для чтения

isDirect

public abstract boolean isDirect()
Указывает, является ли этот буфер символов прямым.
Specified by:
isDirect in class Buffer
Returns:
true если и только если этот буфер является прямым

hashCode

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

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

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

Overrides:
hashCode in class Object
Returns:
Текущий хэш-код этого буфера
See Also:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

equals

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

Два буфера символов равны тогда и только тогда, когда

  1. Они имеют одинаковый тип элементов,

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

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

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

Overrides:
equals in class Object
Parameters:
ob - Объект, с которым будет сравниваться этот буфер
Returns:
true если и только если этот буфер равен данному объекту
See Also:
  • Object.hashCode()
  • HashMap

compareTo

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

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

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

Specified by:
compareTo in interface Comparable<CharBuffer>
Parameters:
that - объект, подлежащий сравнению.
Returns:
Отрицательное целое число, ноль или положительное целое число, если этот буфер меньше, равен или больше данного буфера

mismatch

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

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

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

toString

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

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

Specified by:
toString in interface CharSequence
Overrides:
toString in class Object
Returns:
Указанная строка

length

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

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

Specified by:
length in interface CharSequence
Returns:
Длина этого буфера символов

isEmpty

public final boolean isEmpty()
Возвращает true , если этот буфер символов пуст.
Specified by:
isEmpty in interface CharSequence
Returns:
true если есть 0 оставшихся символов, в противном случае false
Since:
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 - Добавляемый символ
Возвращает:
Этот буфер
Выбрасывает:
BufferOverflowException - Если в этом буфере недостаточно места
ReadOnlyBufferException - Если этот буфер только для чтения
С тех пор как:
1.5

order

public abstract ByteOrder order()
Возвращает порядок байтов этого буфера.

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

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

© 1993, 2023, 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/21/docs/api/java.base/java/nio/CharBuffer.html

Spec-Zone.ru

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