Spec-Zone.ru › OpenJDK 17

Класс DoubleBuffer

java.lang.Object
java.nio.Buffer
java.nio.DoubleBuffer
Все реализованные интерфейсы:
Comparable<DoubleBuffer>
public abstract class DoubleBuffer extends Buffer implements Comparable<DoubleBuffer>
Буфер с двойной точностью.

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

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

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

  • Абсолютные и относительные методы bulk put, которые передают непрерывные последовательности чисел с двойной точностью из массива чисел с двойной точностью{#if[char]?, строки,} или другого буфера с двойной точностью в этот буфер;{#if[!byte]? и}

  • Метод для compacting буфера с двойной точностью.

Буферы с двойной точностью можно создать либо с помощью allocation, который выделяет память для содержимого буфера, либо с помощью wrapping существующего массива чисел с двойной точностью {#if[char]?или строки} в буфер, либо создав представление существующего буфера байтов.

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

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

С:
1.4

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

Модификатор и тип Метод Описание
static DoubleBuffer allocate(int capacity)
Выделяет новый буфер с двойной точностью.
final double[] array()
Возвращает массив чисел с двойной точностью, на котором основан этот буфер (необязательная операция).
final int arrayOffset()
Возвращает смещение в массиве, на котором основан этот буфер, первого элемента буфера (необязательная операция).
abstract DoubleBuffer asReadOnlyBuffer()
Создает новый, только для чтения буфер с двойной точностью, который использует содержимое этого буфера.
final DoubleBuffer clear()
Очищает этот буфер.
abstract DoubleBuffer compact()
Уплотняет этот буфер (необязательная операция).
int compareTo(DoubleBuffer that)
Сравнивает этот буфер с другим.
abstract DoubleBuffer duplicate()
Создает новый буфер с двойной точностью, который использует содержимое этого буфера.
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()
Указывает, поддерживается ли этот буфер доступным массивом чисел с двойной точностью.
int hashCode()
Возвращает текущий хэш-код этого буфера.
abstract boolean isDirect()
Указывает, является ли этот буфер с двойной точностью прямым.
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()
Создает новый буфер с двойной точностью, содержимое которого является общим подпоследовательностью содержимого этого буфера.
abstract DoubleBuffer slice(int index, int length)
Создает новый буфер с двойной точностью, содержимое которого является общим подпоследовательностью содержимого этого буфера.
String toString()
Возвращает строку, обобщающую состояние этого буфера.
static DoubleBuffer wrap(double[] array)
Заворачивает массив чисел с двойной точностью в буфер.
static DoubleBuffer wrap(double[] array, int offset, int length)
Заворачивает массив чисел с двойной точностью в буфер.

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

capacity, hasRemaining, isReadOnly, limit, position, remaining

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

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

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

allocate

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

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

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

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); 
Parameters:
index - Индекс в этом буфере, с которого начнется запись значений типа double; должен быть неотрицательным и меньше limit()
src - Массив, из которого необходимо считать значения типа double
Returns:
Этот буфер
Throws:
IndexOutOfBoundsException - Если index отрицательный, не меньше limit(), или limit() - index < src.length
ReadOnlyBufferException - Если этот буфер только для чтения
Since:
13

hasArray

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

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

Specified by:
hasArray в классе Buffer
Returns:
true если и только если этот буфер поддерживается массивом и не является только для чтения

array

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

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

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

Specified by:
array в классе Buffer
Returns:
Массив, который поддерживает этот буфер
Throws:
ReadOnlyBufferException - Если этот буфер поддерживается массивом, но является только для чтения
UnsupportedOperationException - Если этот буфер не поддерживается доступным массивом

arrayOffset

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

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

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

Specified by:
arrayOffset в классе Buffer
Returns:
Смещение в массиве этого буфера первого элемента буфера
Throws:
ReadOnlyBufferException - Если этот буфер поддерживается массивом, но является только для чтения
UnsupportedOperationException - Если этот буфер не поддерживается доступным массивом

position

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

limit

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

mark

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

reset

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

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

Overrides:
reset в классе Buffer
Returns:
Этот буфер

clear

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

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

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

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

Overrides:
clear в классе Buffer
Returns:
Этот буфер

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

Overrides:
flip в классе Buffer
Returns:
Этот буфер

rewind

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

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

 out.write(buf);    // Write remaining data
 buf.rewind();      // Rewind buffer
 buf.get(array);    // Copy data into array
Overrides:
rewind в классе Buffer
Returns:
Этот буфер

compact

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

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

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

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

isDirect

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

toString

public String toString()
Возвращает строку, обобщающую состояние этого буфера.
Overrides:
toString в классе Object
Returns:
Строка-реферат

hashCode

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

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

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

Overrides:
hashCode в классе Object
Returns:
Текущий код хеширования этого буфера
See Also:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.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-буфер не равен любому другому типу объекта.

Overrides:
equals в классе Object
Parameters:
ob - Объект, с которым должен быть сравнен этот буфер
Returns:
true если и только если этот буфер равен заданному объекту
See Also:
  • 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 не может быть сравнен ни с каким другим типом объекта.

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

mismatch

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

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

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

order

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

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

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

© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/DoubleBuffer.html

Spec-Zone.ru

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