Класс CharBuffer
- Все реализуемые интерфейсы:
-
Appendable,CharSequence,Comparable<CharBuffer>,Readable
public abstract class CharBuffer extends Buffer implements Comparable<CharBuffer>, Appendable, CharSequence, Readable
Этот класс определяет четыре категории операций над буферами символов:
Абсолютные и относительные методы
getиput, которые считывают и записывают отдельные символы;Абсолютные и относительные методы
bulk get, которые передают непрерывные последовательности символов из этого буфера в массив; иАбсолютные и относительные методы
bulk put, которые передают непрерывные последовательности символов из массива символов{#if[char]?, строки,} или другого буфера символов в этот буфер;{#if[!byte]? и}Метод для
compactingбуфера символов.
Буферы символов могут быть созданы либо с помощью allocation, который выделяет место для содержимого буфера, либо с помощью wrapping существующего массива символов {#if[char]?или строки} в буфер, или путем создания представления существующего буфера байтов.
Как и буфер байтов, буфер символов является либо прямым, или непрямым. Буфер символов, созданный с помощью методов wrap этого класса, будет непрямым. Буфер символов, созданный как представление буфера байтов, будет прямым только в том случае, если сам буфер байтов является прямым. Прямой или нет буфер символов может быть определено вызовом метода isDirect.
Этот класс реализует интерфейс CharSequence, чтобы буферы символов можно было использовать там, где принимаются последовательности символов, например, в пакете регулярных выражений java.util.regex. Методы, определенные CharSequence, работают относительно текущей позиции буфера при их вызове.
Методы в этом классе, которые не возвращают никакого значения, по умолчанию возвращают буфер, на котором они вызываются. Это позволяет объединять вызовы методов. Последовательность инструкций
cb.put("text/");
cb.put(subtype);
cb.put("; charset=");
cb.put(enc); может, например, быть заменена одной инструкцией
cb.put("text/").put(subtype).put("; charset=").put(enc);
- С:
- 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 для блока данных. |
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 |
Заворачивает последовательность символов в буфер. |
Методы, объявленные в классе 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- Еслиcapacityявляется отрицательным целым числом
wrap
public static CharBuffer wrap(char[] array, int offset, int length)
Новый буфер будет поддерживаться заданным массивом char; то есть изменения в буфере приведут к изменению массива и наоборот. Емкость нового буфера будет array.length, его положение — offset, его предел — offset + length, его метка будет неопределена, а порядок байтов — native order базового оборудования. Его backing array будет заданным массивом, а его array offset — нулём.
- Параметры:
-
array- Массив, который будет поддерживать новый буфер -
offset- Смещение подмассива для использования; должно быть неотрицательным и не большеarray.length. Положение нового буфера будет установлено в это значение. -
length- Длина подмассива для использования; должно быть неотрицательным и не большеarray.length - offset. Предел нового буфера будет установлен вoffset + length. - Возвращает:
- Новый буфер char
- Исключения:
-
IndexOutOfBoundsException- Если условия наoffsetиlengthпараметры не соблюдаются
wrap
public static CharBuffer wrap(char[] array)
Новый буфер будет поддерживаться заданным массивом char; то есть изменения в буфере приведут к изменению массива и наоборот. Емкость и предел нового буфера будут array.length, его положение будет нулём, его метка — неопределённой, а порядок байтов — native order базового оборудования. Его backing array будет заданным массивом, а его array offset — нулём.
- Параметры:
-
array- Массив, который будет поддерживать этот буфер - Возвращает:
- Новый буфер char
read
public int read(CharBuffer target) throws IOException
- Определено в:
-
readв интерфейсеReadable - Параметры:
-
target- буфер для чтения символов - Возвращает:
- Количество символов, добавленных в буфер, или -1, если этот источник символов достиг конца
- Исключения:
-
IOException- если произошла ошибка ввода-вывода -
ReadOnlyBufferException- если целевой буфер является только для чтения - С:
- 1.5
wrap
public static CharBuffer wrap(CharSequence csq, int start, int end)
Содержимое нового, только для чтения буфера будет содержанием заданной последовательности символов. Емкость буфера будет csq.length(), его положение — start, его предел — end, а его метка — неопределена.
- Параметры:
-
csq- Последовательность символов, из которой должен быть создан новый буфер символов -
start- Индекс первого символа для использования; должен быть неотрицательным и не большеcsq.length(). Положение нового буфера будет установлено в это значение. -
end- Индекс символа, следующего за последним используемым символом; должен быть не меньшеstartи не большеcsq.length(). Предел нового буфера будет установлен в это значение. - Возвращает:
- Новый буфер символов
- Исключения:
-
IndexOutOfBoundsException- Если условия наstartиendпараметры не соблюдаются
wrap
public static CharBuffer wrap(CharSequence csq)
Содержимое нового, только для чтения буфера будет содержанием заданной последовательности символов. Емкость и предел нового буфера будут csq.length(), его положение — нулём, а его метка — неопределённой.
- Параметры:
-
csq- Последовательность символов, из которой должен быть создан новый буфер символов - Возвращает:
- Новый буфер символов
slice
public abstract CharBuffer slice()
Содержимое нового буфера начнётся с текущего положения этого буфера. Изменения в содержимом этого буфера будут видны в новом буфере, и наоборот; значения положения, предела и метки двух буферов будут независимы.
Положение нового буфера будет нулём, его емкость и предел будут количеством оставшихся символов в этом буфере, его метка будет неопределённой, а порядок байтов будет идентичным порядку байтов этого буфера. Новый буфер будет прямым, если и только если этот буфер прямой, и он будет только для чтения, если и только если этот буфер только для чтения.
- Определено в:
-
sliceв классеBuffer - Возвращает:
- Новый буфер char
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()
Содержимое нового буфера будет таким же, как содержимое этого буфера. Изменения в содержимом этого буфера будут видны в новом буфере, и наоборот; значения положения, предела и метки двух буферов будут независимы.
Емкость, предел, положение, метка и порядок байтов нового буфера будут идентичны значениям этого буфера. Новый буфер будет прямым, если и только если этот буфер прямой, и он будет только для чтения, если и только если этот буфер только для чтения.
- Определено в:
-
duplicateв классеBuffer - Возвращает:
- Новый буфер char
asReadOnlyBuffer
public abstract CharBuffer asReadOnlyBuffer()
Содержимое нового буфера будет таким же, как содержимое этого буфера. Изменения в содержимом этого буфера будут видны в новом буфере; однако сам новый буфер будет только для чтения и не позволит изменять совместное содержимое. Значения положения, предела и метки двух буферов будут независимы.
Емкость, предел, положение, метка и порядок байтов нового буфера будут идентичны значениям этого буфера.
Если этот буфер сам по себе только для чтения, то этот метод ведёт себя точно так же, как метод duplicate.
- Возвращает:
- Новый буфер char только для чтения
get
public abstract char get()
- Возвращает:
- Символ char в текущем положении буфера
- Исключения:
-
BufferUnderflowException- Если текущее положение буфера не меньше его предела
put
public abstract CharBuffer put(char c)
Записывает заданный символ char в этот буфер в текущем положении и затем увеличивает положение.
- Параметры:
-
c- Символ char, который нужно записать - Возвращает:
- Этот буфер
- Исключения:
-
BufferOverflowException- Если текущее положение этого буфера не меньше его предела -
ReadOnlyBufferException- Если этот буфер только для чтения
получить
public abstract char get(int index)
- Параметры:
-
index- Индекс, с которого будет считан символ - Возвращает:
- Символ по заданному индексу
- Исключения:
-
IndexOutOfBoundsException- Еслиindexотрицателен или не меньше предела буфера
вставить
public abstract CharBuffer put(int index, char c)
Записывает заданный символ в этот буфер по заданному индексу.
- Параметры:
-
index- Индекс, в который будет записан символ -
c- Значение символа для записи - Возвращает:
- Этот буфер
- Исключения:
-
IndexOutOfBoundsException- Еслиindexотрицателен или не меньше предела буфера -
ReadOnlyBufferException- Если этот буфер только для чтения
получить
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не выполнены
получить
public CharBuffer get(char[] dst)
Этот метод переносит символы из этого буфера в заданный массив назначения. Вызов этого метода в форме src.get(a) ведет себя точно так же, как вызов
src.get(a, 0, a.length)
- Параметры:
-
dst- Массив назначения - Возвращает:
- Этот буфер
- Исключения:
-
BufferUnderflowException- Если оставшихся символов в этом буфере меньше, чемlength
получить
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
получить
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
вставить
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- Если этот буфер только для чтения
вставить
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 могут быть безопасно вызваны.
- Указано в:
-
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- Новое значение позиции; должно быть неотрицательным и не больше текущего предела - Возвращает:
- Этот буфер
limit
public final CharBuffer limit(int newLimit)
- Переопределяет:
-
limitв классеBuffer - Параметры:
-
newLimit- Новое значение предела; должно быть неотрицательным и не больше емкости этого буфера - Возвращает:
- Этот буфер
mark
public final CharBuffer mark()
- Overrides:
-
markin classBuffer - Возвращает:
- Этот буфер
reset
public final CharBuffer reset()
Вызов этого метода не изменяет и не удаляет значение метки.
- Overrides:
-
resetin classBuffer - Возвращает:
- Этот буфер
clear
public final CharBuffer clear()
Вызовите этот метод перед использованием последовательности операций чтения канала или операций put для заполнения этого буфера. Например:
buf.clear(); // Prepare buffer for reading in.read(buf); // Read data
Этот метод на самом деле не стирает данные в буфере, но он назван так, как будто это делает, потому что он чаще всего используется в ситуациях, в которых это может быть и нужно.
- Overrides:
-
clearin classBuffer - Возвращает:
- Этот буфер
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:
-
flipin classBuffer - Возвращает:
- Этот буфер
rewind
public final CharBuffer rewind()
Вызовите этот метод перед последовательностью операций записи канала или операций get, предположив, что предел уже установлен должным образом. Например:
out.write(buf); // Write remaining data buf.rewind(); // Rewind buffer buf.get(array); // Copy data into array
- Overrides:
-
rewindin classBuffer - Возвращает:
- Этот буфер
compact
public abstract CharBuffer compact()
Символы между текущей позицией буфера и его пределом, если таковые имеются, копируются в начало буфера. То есть символ с индексом p = position() копируется в индекс ноль, символ с индексом p + 1 копируется в индекс один и так далее, пока символ с индексом limit() - 1 не будет скопирован в индекс n = limit() - 1 - p. Позиция буфера затем устанавливается в n+1, а его предел — в его емкость. Метка, если определена, удаляется.
Позиция буфера устанавливается в число скопированных символов, а не в ноль, чтобы вызов этого метода можно было немедленно последовать вызовом другого относительного метода put.
- Возвращает:
- Этот буфер
- Исключения:
-
ReadOnlyBufferException— если этот буфер только для чтения
isDirect
public abstract boolean isDirect()
- Определено в:
-
isDirectin classBuffer - Возвращает:
-
trueесли и только если этот буфер прямой
hashCode
public int hashCode()
Хэш-код буфера символов зависит только от его оставшихся элементов; то есть от элементов с position() до, и включая, элемент с индексом limit() - 1.
Поскольку хэш-коды буферов зависят от содержимого, не рекомендуется использовать буферы в качестве ключей в хэш-картах или подобных структурах данных, если неизвестно, что их содержимое не изменится.
- Overrides:
-
hashCodein classObject - Возвращает:
- Текущий хэш-код этого буфера
- См. также:
equals
public boolean equals(Object ob)
Два буфера символов равны тогда и только тогда, когда
У них одинаковый тип элементов,
У них одинаковое количество оставшихся элементов, и
Две последовательности оставшихся элементов, рассматриваемые независимо от своих начальных позиций, точечно равны.
Буфер символов не равен ни одному другому типу объекта.
- Overrides:
-
equalsin classObject - Параметры:
-
ob— объект, с которым будет сравниваться этот буфер - Возвращает:
-
trueесли и только если этот буфер равен заданному объекту - См. также:
compareTo
public int compareTo(CharBuffer that)
Два буфера символов сравниваются путём лексикографического сравнения их последовательностей оставшихся элементов без учёта начальной позиции каждой последовательности в соответствующем буфере. Пары char элементов сравниваются, как будто вызывается Character.compare(char,char).
Буфер символов не сравним ни с каким другим типом объекта.
- Определено в:
-
compareToin interfaceComparable<CharBuffer> - Параметры:
-
that— сравниваемый объект. - Возвращает:
- Отрицательное целое число, ноль или положительное целое число, если этот буфер меньше, равен или больше заданного буфера
mismatch
public int mismatch(CharBuffer that)
position каждого буфера и будет в диапазоне от 0 (включительно) до меньшего из remaining элементов в каждом буфере (исключительно). Если два буфера имеют общую префиксную часть, возвращаемый индекс — это длина общей префиксной части, и это следует из того, что между двумя буферами есть несовпадение в этом индексе в пределах соответствующих буферов. Если один буфер является правильным префиксом другого, то возвращаемый индекс — это меньшее из оставшихся элементов в каждом буфере, и следует, что индекс допустим только для буфера с большим количеством оставшихся элементов. В противном случае несовпадений нет.
- Параметры:
-
that— буфер байтов, который проверяется на несовпадение с этим буфером - Возвращает:
- Относительный индекс первого несовпадения между этим и заданным буфером, в противном случае -1, если несовпадений нет.
- С:
- 11
toString
public String toString()
Первый символ полученной строки будет символом в позиции этого буфера, а последний символ будет символом с индексом limit() - 1. Вызов этого метода не изменяет позицию буфера.
- Определено в:
-
toStringin interfaceCharSequence - Overrides:
-
toStringin classObject - Возвращает:
- Указанную строку
length
public final int length()
При рассмотрении как последовательности символов, длина буфера символов просто является числом символов между позицией (включительно) и пределом (исключительно); то есть, она эквивалентна remaining().
- Определено в:
-
lengthin interfaceCharSequence - Возвращает:
- Длина этого буфера символов
isEmpty
public final boolean isEmpty()
true, если этот буфер символов пустой.- Определено в:
-
isEmptyin interfaceCharSequence - Возвращает:
-
trueесли есть0оставшихся символов, в противном случаеfalse - С:
- 15
charAt
public final char charAt(int index)
- Определено в:
-
charAtin interfaceCharSequence - Параметры:
-
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, 2021, 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/17/docs/api/java.base/java/nio/CharBuffer.html