Spec-Zone.ru › OpenJDK 27

Класс ByteBuffer

java.lang.Object
java.nio.Buffer
java.nio.ByteBuffer
Все реализуемые интерфейсы:
Comparable<ByteBuffer>
Прямые известные подклассы:
MappedByteBuffer
public abstract sealed class ByteBuffer extends Buffer implements Comparable<ByteBuffer> permits MappedByteBuffer (not exhaustive)
Байтовый буфер.

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

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

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

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

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

  • Методы создания буферов-представлений, позволяющих представить байтовый буфер как буфер, содержащий значения другого примитивного типа; и

  • Метод для compacting байтового буфера.

Байтовые буферы можно создать либо вызовом метода allocation, который выделяет место для содержимого буфера, либо путем wrapping существующего массива байтов в буфер.

Прямые и непрямые буферы

Байтовый буфер бывает прямым или непрямым. Для прямого байтового буфера виртуальная машина Java приложит все усилия, чтобы выполнять операции ввода-вывода непосредственно с ним. То есть она попытается избежать копирования содержимого буфера в промежуточный буфер (или из него) перед каждым вызовом (или после него) одной из базовых операций ввода-вывода операционной системы.

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

Прямой байтовый буфер также можно создать, mapping область файла непосредственно в память. Реализация платформы Java может по желанию поддерживать создание прямых байтовых буферов из машинного кода с помощью JNI. Если экземпляр одного из этих типов буферов ссылается на недоступную область памяти, попытка доступа к этой области не изменит содержимое буфера и приведёт к выбрасыванию исключения, тип которого не определён: либо во время доступа, либо позднее.

Определить, является ли байтовый буфер прямым или непрямым, можно, вызвав его метод isDirect. Этот метод предоставлен для явного управления буферами в коде, критичном к производительности.

Доступ к двоичным данным

Этот класс определяет методы для чтения и записи значений всех остальных примитивных типов, кроме boolean. Примитивные значения преобразуются в последовательности байтов (или обратно) в соответствии с текущим порядком байтов буфера, который можно получить и изменить с помощью методов order. Конкретные порядки байтов представлены экземплярами класса ByteOrder. Начальный порядок байтов байтового буфера всегда — BIG_ENDIAN.

Для доступа к гетерогенным двоичным данным, то есть к последовательностям значений разных типов, этот класс определяет семейство абсолютных и относительных методов get и put для каждого типа. Например, для значений с плавающей точкой одинарной точности (32 бита) этот класс определяет:

    float      getFloat()
    float      getFloat(int index)
    ByteBuffer putFloat(float f)
    ByteBuffer putFloat(int index, float f)

Соответствующие методы определены для типов char, short, int, long и double. Параметры индекса абсолютных методов get и put задаются в байтах, а не в единицах типа, который читается или записывается.

Для доступа к гомогенным двоичным данным, то есть к последовательностям значений одного типа, этот класс определяет методы, создающие представления заданного байтового буфера. Буфер-представление — это просто другой буфер, содержимое которого хранится в байтовом буфере. Изменения содержимого байтового буфера видны в буфере-представлении, и наоборот; значения позиции, предела и отметки у этих буферов независимы. Например, метод asFloatBuffer создаёт экземпляр класса FloatBuffer, который использует в качестве хранилища байтовый буфер, для которого вызван этот метод. Соответствующие методы создания представлений определены для типов char, short, int, long и double.

Буферы-представления имеют три важных преимущества перед описанными выше семействами типизированных методов get и put:

  • Индексация буфера-представления выполняется не в байтах, а в единицах размера значений соответствующего типа;

  • Буфер-представление предоставляет относительные массовые методы get и put, которые могут передавать непрерывные последовательности значений между буфером и массивом или другим буфером того же типа; и

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

Порядок байтов буфера-представления фиксируется в соответствии с порядком байтов его байтового буфера на момент создания представления.

Цепочки вызовов

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

    bb.putInt(0xCAFEBABE);
    bb.putShort(3);
    bb.putShort(45);
может, например, быть заменена одним оператором
    bb.putInt(0xCAFEBABE).putShort(3).putShort(45);

Необязательные операции

Методы, обозначенные как необязательные операции, при вызове для доступного только для чтения ByteBuffer выбрасывают ReadOnlyBufferException. Методы array и arrayOffset выбрасывают UnsupportedOperationException, если ByteBuffer не использует в качестве хранилища доступный массив байтов (независимо от того, доступен ли ByteBuffer только для чтения).
Граф запечатанной иерархии классов:
Sealed class hierarchy graph for ByteBufferSealed class hierarchy graph for ByteBuffer
Начиная с версии:
1.4

Краткое описание методов

Модификатор и тип Метод Описание
final ByteBuffer alignedSlice(int unitSize)
Создаёт новый байтовый буфер, содержимое которого является общей выровненной подпоследовательностью содержимого этого буфера.
final int alignmentOffset(int index, int unitSize)
Возвращает адрес памяти байта с заданным индексом по модулю заданного размера единицы.
static ByteBuffer allocate(int capacity)
Выделяет новый байтовый буфер.
static ByteBuffer allocateDirect(int capacity)
Выделяет новый прямой байтовый буфер.
final byte[] array()
Возвращает массив байтов, используемый в качестве хранилища этого буфера (необязательная операция).
final int arrayOffset()
Возвращает смещение первого элемента буфера относительно массива, используемого в качестве хранилища этого буфера (необязательная операция).
abstract CharBuffer asCharBuffer()
Создаёт представление этого байтового буфера в виде символьного буфера.
abstract DoubleBuffer asDoubleBuffer()
Создаёт представление этого байтового буфера в виде буфера double.
abstract FloatBuffer asFloatBuffer()
Создаёт представление этого байтового буфера в виде буфера float.
abstract IntBuffer asIntBuffer()
Создаёт представление этого байтового буфера в виде буфера int.
abstract LongBuffer asLongBuffer()
Создаёт представление этого байтового буфера в виде буфера long.
abstract ByteBuffer asReadOnlyBuffer()
Создаёт новый байтовый буфер только для чтения, совместно использующий содержимое этого буфера.
abstract ShortBuffer asShortBuffer()
Создаёт представление этого байтового буфера в виде буфера short.
ByteBuffer clear()
Очищает этот буфер.
abstract ByteBuffer compact()
Уплотняет этот буфер (необязательная операция).
int compareTo(ByteBuffer that)
Сравнивает этот буфер с другим.
abstract ByteBuffer duplicate()
Создаёт новый байтовый буфер, совместно использующий содержимое этого буфера.
boolean equals(Object ob)
Определяет, равен ли этот буфер другому объекту.
ByteBuffer flip()
Переводит этот буфер в режим чтения.
abstract byte get()
Относительный метод get.
ByteBuffer get(byte[] dst)
Относительный массовый метод get.
ByteBuffer get(byte[] dst, int offset, int length)
Относительный массовый метод get.
abstract byte get(int index)
Абсолютный метод get.
ByteBuffer get(int index, byte[] dst)
Абсолютный массовый метод get.
ByteBuffer get(int index, byte[] dst, int offset, int length)
Абсолютный массовый метод get.
abstract char getChar()
Относительный метод get для чтения значения char.
abstract char getChar(int index)
Абсолютный метод get для чтения значения char.
abstract double getDouble()
Относительный метод get для чтения значения double.
abstract double getDouble(int index)
Абсолютный метод get для чтения значения double.
abstract float getFloat()
Относительный метод get для чтения значения float.
abstract float getFloat(int index)
Абсолютный метод get для чтения значения float.
abstract int getInt()
Относительный метод get для чтения значения int.
abstract int getInt(int index)
Абсолютный метод get для чтения значения int.
abstract long getLong()
Относительный метод get для чтения значения long.
abstract long getLong(int index)
Абсолютный метод get для чтения значения long.
abstract short getShort()
Относительный метод get для чтения значения short.
abstract short getShort(int index)
Абсолютный метод get для чтения значения short.
final boolean hasArray()
Определяет, использует ли этот буфер в качестве хранилища доступный массив байтов.
int hashCode()
Возвращает текущий хеш-код этого буфера.
abstract boolean isDirect()
Определяет, является ли этот байтовый буфер прямым.
ByteBuffer limit(int newLimit)
Устанавливает предел этого буфера.
ByteBuffer mark()
Устанавливает отметку этого буфера в его текущей позиции.
int mismatch(ByteBuffer that)
Находит и возвращает относительный индекс первого несовпадения между этим буфером и заданным буфером.
final ByteOrder order()
Возвращает порядок байтов этого буфера.
final ByteBuffer order(ByteOrder bo)
Изменяет порядок байтов этого буфера.
ByteBuffer position(int newPosition)
Устанавливает позицию этого буфера.
abstract ByteBuffer put(byte b)
Относительный метод put (необязательная операция).
final ByteBuffer put(byte[] src)
Относительный массовый метод put (необязательная операция).
ByteBuffer put(byte[] src, int offset, int length)
Относительный массовый метод put (необязательная операция).
abstract ByteBuffer put(int index, byte b)
Абсолютный метод put (необязательная операция).
ByteBuffer put(int index, byte[] src)
Абсолютный массовый метод put (необязательная операция).
ByteBuffer put(int index, byte[] src, int offset, int length)
Абсолютный массовый метод put (необязательная операция).
ByteBuffer put(int index, ByteBuffer src, int offset, int length)
Абсолютный массовый метод put (необязательная операция).
ByteBuffer put(ByteBuffer src)
Относительный массовый метод put (необязательная операция).
abstract ByteBuffer putChar(char value)
Относительный метод put для записи значения char (необязательная операция).
abstract ByteBuffer putChar(int index, char value)
Абсолютный метод put для записи значения char (необязательная операция).
abstract ByteBuffer putDouble(double value)
Относительный метод put для записи значения double (необязательная операция).
abstract ByteBuffer putDouble(int index, double value)
Абсолютный метод put для записи значения double (необязательная операция).
abstract ByteBuffer putFloat(float value)
Относительный метод put для записи значения float (необязательная операция).
abstract ByteBuffer putFloat(int index, float value)
Абсолютный метод put для записи значения float (необязательная операция).
abstract ByteBuffer putInt(int value)
Относительный метод put для записи значения int (необязательная операция).
abstract ByteBuffer putInt(int index, int value)
Абсолютный метод put для записи значения int (необязательная операция).
abstract ByteBuffer putLong(int index, long value)
Абсолютный метод put для записи значения long (необязательная операция).
abstract ByteBuffer putLong(long value)
Относительный метод put для записи значения long (необязательная операция).
abstract ByteBuffer putShort(int index, short value)
Абсолютный метод put для записи значения short (необязательная операция).
abstract ByteBuffer putShort(short value)
Относительный метод put для записи значения short (необязательная операция).
ByteBuffer reset()
Сбрасывает позицию этого буфера к позиции, отмеченной ранее.
ByteBuffer rewind()
Перематывает этот буфер.
abstract ByteBuffer slice()
Создаёт новый байтовый буфер, содержимое которого является общей подпоследовательностью содержимого этого буфера.
abstract ByteBuffer slice(int index, int length)
Создаёт новый байтовый буфер, содержимое которого является общей подпоследовательностью содержимого этого буфера.
String toString()
Возвращает строку с описанием состояния этого буфера.
static ByteBuffer wrap(byte[] array)
Оборачивает массив байтов в буфер.
static ByteBuffer wrap(byte[] array, int offset, int length)
Оборачивает массив байтов в буфер.

Методы, объявленные в классе Buffer

capacity, hasRemaining, isReadOnly, limit, position, remaining
Модификатор и тип Метод Описание
final int capacity()
Возвращает ёмкость этого буфера.
final boolean hasRemaining()
Определяет, есть ли элементы между текущей позицией и пределом.
abstract boolean isReadOnly()
Определяет, доступен ли этот буфер только для чтения.
final int limit()
Возвращает предел этого буфера.
final int position()
Возвращает позицию этого буфера.
final int remaining()
Возвращает количество элементов между текущей позицией и пределом.

Методы, объявленные в классе Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
protected void finalize()
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии.
Финализация устарела и подлежит удалению в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать до своего пробуждения, обычно в результате вызова уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать до своего пробуждения, обычно в результате вызова уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать до своего пробуждения, обычно в результате вызова уведомления или прерывания, либо до истечения заданного промежутка реального времени.

Подробное описание методов

allocateDirect

public static ByteBuffer allocateDirect(int capacity)
Выделяет новый прямой байтовый буфер.

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

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

allocate

public static ByteBuffer allocate(int capacity)
Выделяет новый байтовый буфер.

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

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

wrap

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

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

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

wrap

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

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

Параметры:
array — массив, на котором будет основан этот буфер
Возвращает:
Новый байтовый буфер

slice

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

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

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

Определено в:
slice в классе Buffer
Возвращает:
Новый байтовый буфер
См. также:
  • alignedSlice(int)

slice

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

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

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

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

duplicate

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

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

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

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

asReadOnlyBuffer

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

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

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

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

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

get

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

put

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

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

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

get

public abstract byte get(int index)
Абсолютный метод get. Считывает байт по указанному индексу.
Параметры:
index — индекс, по которому будет считан байт
Возвращает:
Байт по указанному индексу
Исключения:
IndexOutOfBoundsException — если index отрицательно или не меньше предела буфера

put

public abstract ByteBuffer put(int index, byte b)
Абсолютный метод put (необязательная операция).

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

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

get

public ByteBuffer get(byte[] 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 ByteBuffer get(byte[] dst)
Относительный метод get для чтения блока данных.

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

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

get

public ByteBuffer get(int index, byte[] 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 ByteBuffer get(int index, byte[] 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 ByteBuffer put(ByteBuffer 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 ByteBuffer put(int index, ByteBuffer 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 ByteBuffer put(byte[] 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 ByteBuffer put(byte[] src)
Относительный метод put для записи блока данных (необязательная операция).

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

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

put

public ByteBuffer put(int index, byte[] 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 ByteBuffer put(int index, byte[] 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

hasArray

public final boolean hasArray()
Показывает, основан ли этот буфер на доступном массиве байтов.

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

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

array

public final byte[] array()
Возвращает байтовый массив, на котором основан этот буфер (необязательная операция).

Изменения содержимого этого буфера приведут к изменению содержимого возвращаемого массива, и наоборот.

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

Определено в:
array в классе Buffer
Возвращает:
Массив, на котором основан этот буфер
Исключения:
ReadOnlyBufferException — если этот буфер основан на массиве, но доступен только для чтения
UnsupportedOperationException — если этот буфер не основан на доступном массиве

arrayOffset

public final int arrayOffset()
Возвращает смещение в базовом массиве этого буфера, соответствующее первому элементу буфера (необязательная операция).

Если этот буфер основан на массиве, позиция буфера p соответствует индексу массива p + arrayOffset().

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

Определено в:
arrayOffset в классе Buffer
Возвращает:
Смещение в массиве этого буфера, соответствующее первому элементу буфера
Исключения:
ReadOnlyBufferException — если этот буфер основан на массиве, но доступен только для чтения
UnsupportedOperationException — если этот буфер не основан на доступном массиве

position

public ByteBuffer position(int newPosition)
Устанавливает позицию этого буфера. Если метка задана и превышает новую позицию, она сбрасывается.
Переопределяет:
position в классе Buffer
Параметры:
newPosition — новое значение позиции; должно быть неотрицательным и не превышать текущий предел
Возвращает:
Этот буфер
Начиная с версии:
9

limit

public ByteBuffer limit(int newLimit)
Устанавливает предел этого буфера. Если позиция превышает новый предел, она устанавливается в значение нового предела. Если метка задана и превышает новый предел, она сбрасывается.
Переопределяет:
limit в классе Buffer
Параметры:
newLimit — новое значение предела; должно быть неотрицательным и не превышать ёмкость этого буфера
Возвращает:
Этот буфер
Начиная с версии:
9

mark

public ByteBuffer mark()
Устанавливает метку этого буфера в его текущей позиции.
Переопределяет:
mark в классе Buffer
Возвращает:
Этот буфер
Начиная с версии:
9

reset

public ByteBuffer reset()
Возвращает позицию этого буфера к ранее отмеченной позиции.

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

Переопределяет:
reset в классе Buffer
Возвращает:
Этот буфер
Начиная с версии:
9

clear

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

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

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

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

Переопределяет:
clear в классе Buffer
Возвращает:
Этот буфер
Начиная с версии:
9

flip

public ByteBuffer 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 при передаче данных из одного места в другое.

Переопределяет:
flip в классе Buffer
Возвращает:
Этот буфер
Начиная с версии:
9

rewind

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

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

    out.write(buf);    // Write remaining data
    buf.rewind();      // Rewind buffer
    buf.get(array);    // Copy data into array
Переопределяет:
rewind в классе Buffer
Возвращает:
Этот буфер
Начиная с версии:
9

compact

public abstract ByteBuffer compact()
Уплотняет этот буфер (необязательная операция).

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

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

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

    buf.clear();          // Prepare buffer for use
    while (in.read(buf) >= 0 || buf.position != 0) {
        buf.flip();
        out.write(buf);
        buf.compact();    // In case of partial write
    }
Возвращает:
Этот буфер
Вызывает исключение:
ReadOnlyBufferException - Если этот буфер доступен только для чтения

isDirect

public abstract boolean isDirect()
Показывает, является ли этот байтовый буфер прямым.
Определён в:
isDirect в классе Buffer
Возвращает:
true тогда и только тогда, когда этот буфер является прямым

toString

public String toString()
Возвращает строку с кратким описанием состояния этого буфера.
Переопределяет:
toString в классе Object
Возвращает:
Строку с кратким описанием

hashCode

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

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

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

Переопределяет:
hashCode в классе Object
Возвращает:
Текущий хеш-код этого буфера
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(Object)

equals

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

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

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

  2. в них осталось одинаковое количество элементов; и

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

Байтовый буфер не равен объекту любого другого типа.

Переопределяет:
equals в классе Object
Параметры:
ob - Объект, с которым сравнивается этот буфер
Возвращает:
true тогда и только тогда, когда этот буфер равен указанному объекту
См. также:
  • Object.hashCode()
  • HashMap

compareTo

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

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

Байтовый буфер нельзя сравнивать с объектом любого другого типа.

Определён в:
compareTo в интерфейсе Comparable<ByteBuffer>
Параметры:
that - объект для сравнения.
Возвращает:
Отрицательное целое число, ноль или положительное целое число, если этот буфер меньше, равен или больше указанного буфера

mismatch

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

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

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

order

public final ByteOrder order()
Получает порядок байтов этого буфера.

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

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

order

public final ByteBuffer order(ByteOrder bo)
Изменяет порядок байтов этого буфера.
Параметры:
bo - Новый порядок байтов: BIG_ENDIAN или LITTLE_ENDIAN
Возвращает:
Этот буфер

alignmentOffset

public final int alignmentOffset(int index, int unitSize)
Возвращает адрес памяти, указывающий на байт с заданным индексом, по модулю заданного размера единицы.

Возвращаемое значение неотрицательно и находится в диапазоне от 0 (включительно) до unitSize (не включительно); ноль означает, что адрес байта с указанным индексом выровнен по размеру единицы, а положительное значение — что адрес не выровнен. Если адрес байта с указанным индексом не выровнен, возвращаемое значение показывает, насколько нужно скорректировать индекс, чтобы найти байт по выровненному адресу. В частности, индекс следует либо уменьшить на возвращаемое значение, если оно не превышает index, либо увеличить на размер единицы за вычетом возвращаемого значения. Таким образом, для

    int value = alignmentOffset(index, unitSize)
должны выполняться тождества
    alignmentOffset(index - value, unitSize) == 0, value <= index
и
    alignmentOffset(index + (unitSize - value), unitSize) == 0
.
Примечание API:
Этот метод можно использовать, чтобы определить, можно ли атомарно обращаться к байтам в количестве, равном размеру единицы, начиная с заданного индекса, если такая возможность поддерживается нативной платформой.
Параметры:
index - Индекс, для которого запрашивается смещение выравнивания; должен быть неотрицательным, проверка верхней границы не выполняется
unitSize - Размер единицы в байтах; должен быть степенью числа 2
Возвращает:
Адрес памяти индексированного байта по модулю размера единицы
Вызывает исключение:
IllegalArgumentException - Если индекс отрицателен или размер единицы не является степенью числа 2
UnsupportedOperationException - Если буфер не является прямым и unitSize > 1
Начиная с версии:
9
См. также:
  • alignedSlice(int)

alignedSlice

public final ByteBuffer alignedSlice(int unitSize)
Создаёт новый байтовый буфер, содержимое которого представляет собой общую выровненную подпоследовательность содержимого этого буфера.

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

    nb.alignmentOffset(0, unitSize) == 0
    nb.alignmentOffset(nb.limit(), unitSize) == 0

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

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

Примечание API:
Этот метод можно использовать для создания нового буфера, в котором к байтам в количестве, равном размеру единицы, начиная с индекса, кратного размеру единицы, можно обращаться атомарно, если такая возможность поддерживается нативной платформой.
Параметры:
unitSize - Размер единицы в байтах; должен быть степенью числа 2
Возвращает:
Новый байтовый буфер
Вызывает исключение:
IllegalArgumentException - Если размер единицы не является степенью числа 2
UnsupportedOperationException - Если буфер не является прямым и unitSize > 1
Начиная с версии:
9
См. также:
  • alignmentOffset(int, int)
  • slice()

getChar

public abstract char getChar()
Относительный метод get для чтения значения char.

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

Возвращает:
Значение char по текущей позиции буфера
Вызывает исключение:
BufferUnderflowException - Если в этом буфере осталось меньше двух байтов

putChar

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

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

Параметры:
value - Значение char для записи
Возвращает:
Этот буфер
Вызывает исключение:
BufferOverflowException - Если в этом буфере осталось меньше двух байтов
ReadOnlyBufferException - Если этот буфер доступен только для чтения

getChar

public abstract char getChar(int index)
Абсолютный метод get для чтения значения char.

Считывает два байта по заданному индексу и объединяет их в значение char в соответствии с текущим порядком байтов.

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

putChar

public abstract ByteBuffer putChar(int index, char value)
Абсолютный метод put для записи значения char (необязательная операция).

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

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

asCharBuffer

public abstract CharBuffer asCharBuffer()
Создаёт представление этого байтового буфера в виде буфера char.

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

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

Возвращает:
Новый буфер char

getShort

public abstract short getShort()
Относительный метод get для чтения значения short.

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

Возвращает:
Значение short по текущей позиции буфера
Вызывает исключение:
BufferUnderflowException - Если в этом буфере осталось меньше двух байтов

putShort

public abstract ByteBuffer putShort(short value)
Относительный метод put для записи значения short (необязательная операция).

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

Параметры:
value - Значение short для записи
Возвращает:
Этот буфер
Вызывает исключение:
BufferOverflowException - Если в этом буфере осталось меньше двух байтов
ReadOnlyBufferException - Если этот буфер доступен только для чтения

getShort

public abstract short getShort(int index)
Абсолютный метод get для чтения значения short.

Считывает два байта по заданному индексу и объединяет их в значение short в соответствии с текущим порядком байтов.

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

putShort

public abstract ByteBuffer putShort(int index, short value)
Абсолютный метод put для записи значения short (необязательная операция).

Записывает два байта, содержащие заданное значение short, в текущем порядке байтов в этот буфер по заданному индексу.

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

asShortBuffer

public abstract ShortBuffer asShortBuffer()
Создаёт представление этого байтового буфера в виде буфера short.

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

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

Возвращает:
Новый буфер short

getInt

public abstract int getInt()
Относительный метод get для чтения значения int.

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

Возвращает:
Значение int по текущей позиции буфера
Вызывает исключение:
BufferUnderflowException - Если в этом буфере осталось меньше четырёх байтов

putInt

public abstract ByteBuffer putInt(int value)
Относительный метод put для записи значения int (необязательная операция).

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

Параметры:
value - Значение int для записи
Возвращает:
Этот буфер
Вызывает исключение:
BufferOverflowException - Если в этом буфере осталось меньше четырёх байтов
ReadOnlyBufferException - Если этот буфер доступен только для чтения

getInt

public abstract int getInt(int index)
Абсолютный метод get для чтения значения int.

Считывает четыре байта по заданному индексу и объединяет их в значение int в соответствии с текущим порядком байтов.

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

putInt

public abstract ByteBuffer putInt(int index, int value)
Абсолютный метод put для записи значения int (необязательная операция).

Записывает четыре байта, содержащие заданное значение int, в текущем порядке байтов в этот буфер по заданному индексу.

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

asIntBuffer

public abstract IntBuffer asIntBuffer()
Создаёт представление этого байтового буфера в виде буфера int.

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

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

Возвращает:
Новый буфер int

getLong

public abstract long getLong()
Относительный метод get для чтения значения long.

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

Возвращает:
Значение long по текущей позиции буфера
Вызывает исключение:
BufferUnderflowException - Если в этом буфере осталось меньше восьми байтов

putLong

public abstract ByteBuffer putLong(long value)
Относительный метод put для записи значения long (необязательная операция).

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

Параметры:
value - Значение long для записи
Возвращает:
Этот буфер
Вызывает исключение:
BufferOverflowException - Если в этом буфере осталось меньше восьми байтов
ReadOnlyBufferException - Если этот буфер доступен только для чтения

getLong

public abstract long getLong(int index)
Абсолютный метод get для чтения значения long.

Считывает восемь байтов по заданному индексу и объединяет их в значение long в соответствии с текущим порядком байтов.

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

putLong

public abstract ByteBuffer putLong(int index, long value)
Абсолютный метод put для записи значения long (необязательная операция).

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

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

asLongBuffer

public abstract LongBuffer asLongBuffer()
Создаёт представление этого байтового буфера в виде буфера long.

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

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

Возвращает:
Новый буфер long

getFloat

public abstract float getFloat()
Относительный метод get для чтения значения float.

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

Возвращает:
Значение float по текущей позиции буфера
Вызывает исключение:
BufferUnderflowException - Если в этом буфере осталось меньше четырёх байтов

putFloat

public abstract ByteBuffer putFloat(float value)
Относительный метод put для записи значения float (необязательная операция).

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

Параметры:
value - Значение float для записи
Возвращает:
Этот буфер
Вызывает исключение:
BufferOverflowException - Если в этом буфере осталось меньше четырёх байтов
ReadOnlyBufferException - Если этот буфер доступен только для чтения

getFloat

public abstract float getFloat(int index)
Абсолютный метод get для чтения значения float.

Считывает четыре байта по заданному индексу и объединяет их в значение float в соответствии с текущим порядком байтов.

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

putFloat

public abstract ByteBuffer putFloat(int index, float value)
Абсолютный метод put для записи значения float (необязательная операция).

Записывает четыре байта, содержащие заданное значение float, в текущем порядке байтов в этот буфер по заданному индексу.

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

asFloatBuffer

public abstract FloatBuffer asFloatBuffer()
Создает представление этого байтового буфера в виде буфера float.

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

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

Возвращает:
Новый буфер float

getDouble

public abstract double getDouble()
Относительный метод get для чтения значения double.

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

Возвращает:
Значение double в текущей позиции буфера
Исключения:
BufferUnderflowException — если в этом буфере осталось менее восьми байтов

putDouble

public abstract ByteBuffer putDouble(double value)
Относительный метод put для записи значения double (необязательная операция).

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

Параметры:
value — значение double для записи
Возвращает:
Этот буфер
Исключения:
BufferOverflowException — если в этом буфере осталось менее восьми байтов
ReadOnlyBufferException — если этот буфер доступен только для чтения

getDouble

public abstract double getDouble(int index)
Абсолютный метод get для чтения значения double.

Считывает восемь байтов по заданному индексу и объединяет их в значение double в соответствии с текущим порядком байтов.

Параметры:
index — индекс, с которого будут считаны байты
Возвращает:
Значение double по заданному индексу
Исключения:
IndexOutOfBoundsException — если index отрицателен или не меньше предела буфера минус семь

putDouble

public abstract ByteBuffer putDouble(int index, double value)
Абсолютный метод put для записи значения double (необязательная операция).

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

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

asDoubleBuffer

public abstract DoubleBuffer asDoubleBuffer()
Создает представление этого байтового буфера в виде буфера double.

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

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

Возвращает:
Новый буфер double

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, которая содержит более подробные описания для разработчиков, обзоры концепций, определения терминов, способы обхода проблем и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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