Spec-Zone.ru › OpenJDK 27

Класс DoubleBuffer

java.lang.Object
java.nio.Buffer
java.nio.DoubleBuffer
Все реализуемые интерфейсы:
Comparable<DoubleBuffer>
public abstract sealed class DoubleBuffer extends Buffer implements Comparable<DoubleBuffer>
Буфер типа double.

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

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

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

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

  • Метод для compacting буфера типа double.

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

Как и байтовый буфер, буфер типа double может быть прямым или непрямым. Буфер типа double, созданный с помощью методов wrap этого класса, будет непрямым. Буфер типа double, созданный как представление байтового буфера, будет прямым тогда и только тогда, когда сам байтовый буфер является прямым. Определить, является ли буфер типа double прямым, можно вызовом метода isDirect.

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

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

Методы, указанные как необязательные операции, при вызове для буфера только для чтения DoubleBuffer выбрасывают исключение ReadOnlyBufferException. Методы array и arrayOffset выбрасывают исключение UnsupportedOperationException, если DoubleBuffer не поддерживается доступным массивом типа double (независимо от того, доступен ли DoubleBuffer только для чтения).
С версии:
1.4

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

Модификатор и тип Метод Описание
static DoubleBuffer allocate(int capacity)
Выделяет новый буфер типа double.
final double[] array()
Возвращает массив типа double, на котором основан этот буфер (необязательная операция).
final int arrayOffset()
Возвращает смещение первого элемента буфера относительно базового массива этого буфера (необязательная операция).
abstract DoubleBuffer asReadOnlyBuffer()
Создает новый буфер типа double только для чтения, совместно использующий содержимое этого буфера.
final DoubleBuffer clear()
Очищает этот буфер.
abstract DoubleBuffer compact()
Компактно упаковывает этот буфер (необязательная операция).
int compareTo(DoubleBuffer that)
Сравнивает этот буфер с другим.
abstract DoubleBuffer duplicate()
Создает новый буфер типа double, совместно использующий содержимое этого буфера.
boolean equals(Object ob)
Определяет, равен ли этот буфер другому объекту.
final DoubleBuffer flip()
Переворачивает этот буфер.
abstract double get()
Относительный метод get.
DoubleBuffer get(double[] dst)
Относительный пакетный метод get.
DoubleBuffer get(double[] dst, int offset, int length)
Относительный пакетный метод get.
abstract double get(int index)
Абсолютный метод get.
DoubleBuffer get(int index, double[] dst)
Абсолютный пакетный метод get.
DoubleBuffer get(int index, double[] dst, int offset, int length)
Абсолютный пакетный метод get.
final boolean hasArray()
Определяет, основан ли этот буфер на доступном массиве типа double.
int hashCode()
Возвращает текущий хеш-код этого буфера.
abstract boolean isDirect()
Определяет, является ли этот буфер типа double прямым.
final DoubleBuffer limit(int newLimit)
Устанавливает предел этого буфера.
final DoubleBuffer mark()
Устанавливает отметку буфера на его текущей позиции.
int mismatch(DoubleBuffer that)
Находит и возвращает относительный индекс первого несовпадения между этим буфером и заданным буфером.
abstract ByteOrder order()
Возвращает порядок байтов этого буфера.
final DoubleBuffer position(int newPosition)
Устанавливает позицию этого буфера.
abstract DoubleBuffer put(double d)
Относительный метод put (необязательная операция).
final DoubleBuffer put(double[] src)
Относительный пакетный метод put (необязательная операция).
DoubleBuffer put(double[] src, int offset, int length)
Относительный пакетный метод put (необязательная операция).
abstract DoubleBuffer put(int index, double d)
Абсолютный метод put (необязательная операция).
DoubleBuffer put(int index, double[] src)
Абсолютный пакетный метод put (необязательная операция).
DoubleBuffer put(int index, double[] src, int offset, int length)
Абсолютный пакетный метод put (необязательная операция).
DoubleBuffer put(int index, DoubleBuffer src, int offset, int length)
Абсолютный пакетный метод put (необязательная операция).
DoubleBuffer put(DoubleBuffer src)
Относительный пакетный метод put (необязательная операция).
final DoubleBuffer reset()
Устанавливает позицию этого буфера на ранее отмеченную позицию.
final DoubleBuffer rewind()
Перематывает этот буфер в начало.
abstract DoubleBuffer slice()
Создает новый буфер типа double, содержимое которого представляет собой совместно используемую подпоследовательность содержимого этого буфера.
abstract DoubleBuffer slice(int index, int length)
Создает новый буфер типа double, содержимое которого представляет собой совместно используемую подпоследовательность содержимого этого буфера.
String toString()
Возвращает строку с кратким описанием состояния этого буфера.
static DoubleBuffer wrap(double[] array)
Оборачивает массив типа double в буфер.
static DoubleBuffer wrap(double[] array, int offset, int length)
Оборачивает массив типа double в буфер.

Методы, объявленные в классе 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)
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания, либо истечения заданного промежутка реального времени.

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

allocate

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

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

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

wrap

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

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

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

wrap

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

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

Параметры:
array — массив, который будет использоваться в качестве хранилища этого буфера
Возвращает:
Новый буфер double

slice

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

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

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

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

slice

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

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

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

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

duplicate

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

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

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

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

asReadOnlyBuffer

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

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

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

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

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

get

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

put

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

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

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

get

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

put

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

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

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

get

public DoubleBuffer get(double[] dst, int offset, int length)
Относительный метод get для массового чтения.

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

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

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

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

get

public DoubleBuffer get(double[] dst)
Относительный метод get для массового чтения.

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

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

get

public DoubleBuffer get(int index, double[] dst, int offset, int length)
Абсолютный метод get для массового чтения.

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

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

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

get

public DoubleBuffer get(int index, double[] dst)
Абсолютный метод get для массового чтения.

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

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

put

public DoubleBuffer put(DoubleBuffer src)
Относительный метод put для массовой записи (необязательная операция).

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

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

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

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

put

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

Этот метод переносит length значений double из указанного исходного буфера в этот буфер, начиная с указанной 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 — индекс в этом буфере, по которому будет записано первое значение double; должен быть неотрицательным и меньше limit()
src — буфер, из которого считываются значения double
offset — индекс в исходном буфере, по которому будет считано первое значение double; должен быть неотрицательным и меньше src.limit()
length — количество значений double, считываемых из указанного буфера; должно быть неотрицательным и не превышать меньшее из значений limit() - index и src.limit() - offset
Возвращает:
Этот буфер
Вызывает исключение:
IndexOutOfBoundsException — если не выполнены предварительные условия для параметров index, offset и length
ReadOnlyBufferException — если этот буфер доступен только для чтения
С версии:
16

put

public DoubleBuffer put(double[] src, int offset, int length)
Относительный метод put для массовой записи (необязательная операция).

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

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

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

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

put

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

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

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

put

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

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

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

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

put

public DoubleBuffer put(int index, double[] src)
Абсолютный метод put для массовой записи (необязательная операция).

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

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

hasArray

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

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

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

array

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

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

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

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

arrayOffset

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

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

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

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

position

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

limit

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

mark

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

reset

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

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

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

clear

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

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

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

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

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

flip

public final DoubleBuffer 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 final DoubleBuffer 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 DoubleBuffer compact()
Уплотняет этот буфер (необязательная операция).

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

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

Возвращает:
Этот буфер
Выбрасывает:
ReadOnlyBufferException - если этот буфер доступен только для чтения

isDirect

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

toString

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

hashCode

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

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

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

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

equals

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

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

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

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

  3. две последовательности оставшихся элементов, рассматриваемые независимо от начальных позиций, равны поэлементно. Этот метод считает два элемента double a и b равными, если (a == b) || (Double.isNaN(a) && Double.isNaN(b)). Значения -0.0 и +0.0 считаются равными, в отличие от Double.equals(Object).

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

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

compareTo

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

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

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

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

mismatch

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

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

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

order

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

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

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по 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