Класс FloatBuffer
- java.lang.Object
-
- java.nio.Buffer
-
- java.nio.FloatBuffer
- Все реализованные интерфейсы:
Comparable<FloatBuffer>
public abstract class FloatBuffer extends Buffer implements Comparable<FloatBuffer>
Буфер с плавающей точкой.
Этот класс определяет четыре категории операций над буферами с плавающей точкой:
Абсолютные и относительные методы
getиput, которые считывают и записывают отдельные значения с плавающей точкой;Относительные методы
bulk get, которые копируют непрерывные последовательности значений с плавающей точкой из этого буфера в массив;Относительные методы
bulk put, которые копируют непрерывные последовательности значений с плавающей точкой из массива с плавающей точкой или из другого буфера с плавающей точкой в этот буфер;Метод для
compactingбуфера с плавающей точкой.
Буферы с плавающей точкой могут быть созданы либо с помощью allocation, который выделяет место для содержимого буфера, либо с помощью wrapping существующего массива значений с плавающей точкой в буфер, либо путем создания представления существующего буфера байтов.
Как и буфер байтов, буфер с плавающей точкой может быть прямым или непрямым. Буфер с плавающей точкой, созданный с помощью методов wrap этого класса, будет непрямым. Буфер с плавающей точкой, созданный как представление буфера байтов, будет прямым только в том случае, если сам буфер байтов является прямым. Можно определить, является ли буфер с плавающей точкой прямым, вызвав метод isDirect.
Методы в этом классе, которые не возвращают значение, явно возвращают буфер, на котором они вызваны. Это позволяет цеплять вызовы методов.
- С:
- 1.4
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
static FloatBuffer | allocate(int capacity) | Выделяет новый буфер с плавающей точкой. |
float[] | array() | Возвращает массив значений с плавающей точкой, на котором основан этот буфер (необязательная операция). |
int | arrayOffset() | Возвращает смещение в массиве, на котором основан этот буфер, первого элемента буфера (необязательная операция). |
abstract FloatBuffer | asReadOnlyBuffer() | Создает новый, только для чтения, буфер с плавающей точкой, который разделяет содержимое этого буфера. |
abstract FloatBuffer | compact() | Уплотняет этот буфер (необязательная операция). |
int | compareTo(FloatBuffer that) | Сравнивает этот буфер с другим. |
abstract FloatBuffer | duplicate() | Создает новый буфер с плавающей точкой, который разделяет содержимое этого буфера. |
boolean | equals(Object ob) | Определяет, равен ли этот буфер другому объекту. |
abstract float | get() | Относительный метод get. |
FloatBuffer | get(float[] dst) | Относительный метод пакетного get. |
FloatBuffer | get(float[] dst,
int offset,
int length) | Относительный метод пакетного get. |
abstract float | get(int index) | Абсолютный метод get. |
boolean | hasArray() | Определяет, поддерживает ли этот буфер доступный массив значений с плавающей точкой. |
int | hashCode() | Возвращает текущий хэш-код этого буфера. |
abstract boolean | isDirect() | Определяет, является ли этот буфер с плавающей точкой прямым. |
int | mismatch(FloatBuffer that) | Находит и возвращает относительный индекс первого несовпадения между этим буфером и заданным буфером. |
abstract ByteOrder | order() | Получает порядок байтов этого буфера. |
abstract FloatBuffer | put(float f) | Относительный метод put (необязательная операция). |
FloatBuffer | put(float[] src) | Относительный метод пакетного put (необязательная операция). |
FloatBuffer | put(float[] src,
int offset,
int length) | Относительный метод пакетного put (необязательная операция). |
abstract FloatBuffer | put(int index,
float f) | Абсолютный метод put (необязательная операция). |
FloatBuffer | put(FloatBuffer src) | Относительный метод пакетного put (необязательная операция). |
abstract FloatBuffer | slice() | Создает новый буфер с плавающей точкой, содержимое которого является общим подпоследовательностью содержимого этого буфера. |
String | toString() | Возвращает строку, описывающую состояние этого буфера. |
static FloatBuffer | wrap(float[] array) | Преобразует массив значений с плавающей точкой в буфер. |
static FloatBuffer | wrap(float[] array,
int offset,
int length) | Преобразует массив значений с плавающей точкой в буфер. |
Методы, унаследованные от класса java.nio.Buffer
capacity, clear, flip, hasRemaining, isReadOnly, limit, limit, mark, position, position, remaining, reset, rewind Методы, унаследованные от класса java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait Методы
allocate
public static FloatBuffer allocate(int capacity)
Выделяет новый буфер с плавающей запятой.
Положение нового буфера будет равно нулю, его предел — его емкость, метка будет неопределенной, каждый его элемент будет инициализирован нулем, а порядок байтов — native order базового оборудования. У него будет backing array, и его array offset будет равен нулю.
- Параметры:
-
capacity— емкость нового буфера в числах с плавающей запятой - Возвращает:
- Новый буфер с плавающей запятой
- Исключение:
-
IllegalArgumentException— если емкость является отрицательным целым числом
wrap
public static FloatBuffer wrap(float[] array,
int offset,
int length) Оборачивает массив чисел с плавающей запятой в буфер.
Новый буфер будет опираться на заданный массив чисел с плавающей запятой; то есть изменения в буфере приведут к изменению массива и наоборот. Емкость нового буфера будет array.length, его положение — offset, его предел — offset + length, его метка — неопределенная, а порядок байтов — native order базового оборудования. Его backing array будет заданным массивом, а его array offset — нулём.
- Параметры:
-
array— массив, который будет поддерживать новый буфер -
offset— смещение подмассива для использования; должно быть неотрицательным и не большеarray.length. Положение нового буфера будет установлено в это значение. -
length— длина подмассива для использования; должна быть неотрицательной и не большеarray.length - offset. Предел нового буфера будет установлен вoffset + length. - Возвращает:
- Новый буфер с плавающей запятой
- Исключение:
-
IndexOutOfBoundsException— если условия дляoffsetиlengthпараметров не выполняются
wrap
public static FloatBuffer wrap(float[] array)
Оборачивает массив чисел с плавающей запятой в буфер.
Новый буфер будет опираться на заданный массив чисел с плавающей запятой; то есть изменения в буфере приведут к изменению массива и наоборот. Емкость и предел нового буфера будут array.length, его положение — нулём, его метка — неопределённой, а порядок байтов — native order базового оборудования. Его backing array будет заданным массивом, а его array offset — нулём.
- Параметры:
-
array— массив, который будет поддерживать этот буфер - Возвращает:
- Новый буфер с плавающей запятой
slice
public abstract FloatBuffer slice()
Создаёт новый буфер с плавающей запятой, содержимое которого является общим подпоследовательностью содержимого этого буфера.
Содержимое нового буфера начнётся с текущего положения этого буфера. Изменения в содержимом этого буфера будут видны в новом буфере, и наоборот; значения позиции, предела и метки двух буферов будут независимы.
Положение нового буфера будет равно нулю, его емкость и предел будут равны числу чисел с плавающей запятой, оставшихся в этом буфере, его метка будет неопределённой, а порядок байтов — идентичен порядку байтов этого буфера. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и он будет только для чтения, если и только если этот буфер является только для чтения.
duplicate
public abstract FloatBuffer duplicate()
Создаёт новый буфер с плавающей запятой, который совместно использует содержимое этого буфера.
Содержимое нового буфера будет таким же, как у этого буфера. Изменения в содержимом этого буфера будут видны в новом буфере, и наоборот; значения позиции, предела и метки двух буферов будут независимыми.
Емкость, предел, положение, значения метки и порядок байтов нового буфера будут идентичны значениям этого буфера. Новый буфер будет прямым тогда и только тогда, когда этот буфер является прямым, и он будет только для чтения, если и только если этот буфер является только для чтения.
asReadOnlyBuffer
public abstract FloatBuffer asReadOnlyBuffer()
Создаёт новый, только для чтения буфер с плавающей запятой, который совместно использует содержимое этого буфера.
Содержимое нового буфера будет таким же, как у этого буфера. Изменения в содержимом этого буфера будут видны в новом буфере; однако сам новый буфер будет только для чтения и не позволит изменять совместно используемое содержимое. Значения позиции, предела и метки двух буферов будут независимыми.
Емкость, предел, положение, значения метки и порядок байтов нового буфера будут идентичны значениям этого буфера.
Если этот буфер сам по себе является только для чтения, то этот метод ведёт себя точно так же, как метод duplicate.
- Возвращает:
- Новый буфер с плавающей запятой, только для чтения
get
public abstract float get()
Относительный метод get. Считывает число с плавающей запятой в текущем положении буфера и затем увеличивает позицию.
- Возвращает:
- Число с плавающей запятой в текущем положении буфера
- Исключение:
-
BufferUnderflowException— если текущее положение буфера не меньше его предела
put
public abstract FloatBuffer put(float f)
Относительный метод put (необязательная операция).
Записывает заданное число с плавающей запятой в этот буфер по текущему положению и затем увеличивает позицию.
- Параметры:
-
f— число с плавающей запятой для записи - Возвращает:
- Этот буфер
- Исключение:
-
BufferOverflowException— если текущее положение этого буфера не меньше его предела -
ReadOnlyBufferException— если этот буфер только для чтения
get
public abstract float get(int index)
Абсолютный метод get. Считывает число с плавающей запятой по заданному индексу.
- Параметры:
-
index— индекс, с которого будет считываться число с плавающей запятой - Возвращает:
- Число с плавающей запятой по заданному индексу
- Исключение:
-
IndexOutOfBoundsException— еслиindexотрицателен или не меньше предела буфера
put
public abstract FloatBuffer put(int index,
float f) Абсолютный метод put (необязательная операция).
Записывает заданное число с плавающей запятой в этот буфер по заданному индексу.
- Параметры:
-
index— индекс, по которому будет записываться число с плавающей запятой -
f— значение числа с плавающей запятой для записи - Возвращает:
- Этот буфер
- Исключение:
-
IndexOutOfBoundsException— еслиindexотрицателен или не меньше предела буфера -
ReadOnlyBufferException— если этот буфер только для чтения
get
public FloatBuffer get(float[] 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 FloatBuffer get(float[] dst)
Относительный метод get для блоковой передачи.
Этот метод передает числа с плавающей запятой из этого буфера в заданный массив-приемник. Вызов этого метода в форме src.get(a) ведет себя точно так же, как вызов
src.get(a, 0, a.length)
- Параметры:
-
dst— массив-приемник - Возвращает:
- Этот буфер
- Исключение:
-
BufferUnderflowException— если в этом буфере осталось меньшеlengthчисел с плавающей запятой
put
public FloatBuffer put(FloatBuffer 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 FloatBuffer put(float[] 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(a[i]); за исключением того, что он сначала проверяет наличие достаточного места в этом буфере и потенциально гораздо эффективнее.- Параметры:
-
src- Массив, из которого нужно считать значения с плавающей точкой -
offset- Смещение в массиве первого значения с плавающей точкой для чтения; должно быть неотрицательным и не превышатьarray.length -
length- Количество значений с плавающей точкой для чтения из заданного массива; должно быть неотрицательным и не превышатьarray.length - offset - Возвращает:
- Этот буфер
- Выбрасывает:
-
BufferOverflowException- Если в этом буфере недостаточно места -
IndexOutOfBoundsException- Если условия предварительной проверки для параметровoffsetиlengthне соблюдены -
ReadOnlyBufferException- Если этот буфер только для чтения
put
public final FloatBuffer put(float[] src)
Метод put для массива с плавающей точкой ((необязательная операция)).
Этот метод копирует все содержимое заданного исходного массива с плавающей точкой в этот буфер. Вызов этого метода в форме dst.put(a) ведет себя точно так же, как вызов
dst.put(a, 0, a.length)
- Параметры:
-
src- Исходный массив - Возвращает:
- Этот буфер
- Выбрасывает:
-
BufferOverflowException- Если в этом буфере недостаточно места -
ReadOnlyBufferException- Если этот буфер только для чтения
hasArray
public final boolean hasArray()
Указывает, поддерживается ли этот буфер массивом с плавающей точкой, доступным для чтения/записи.
Если этот метод возвращает true, то методы array и arrayOffset могут быть безопасно вызваны.
- Определено в:
-
hasArrayв классеBuffer - Возвращает:
-
trueесли и только если этот буфер поддерживается массивом и не является только для чтения
array
public final float[] array()
Возвращает массив с плавающей точкой, который поддерживает этот буфер ((необязательная операция)).
Изменения в содержимом этого буфера приведут к изменению содержимого возвращаемого массива, и наоборот.
Вызовите метод hasArray перед вызовом этого метода, чтобы убедиться, что этот буфер имеет доступный массив поддержки.
- Определено в:
-
arrayв классеBuffer - Возвращает:
- Массив, поддерживающий этот буфер
- Выбрасывает:
-
ReadOnlyBufferException- Если этот буфер поддерживается массивом, но является только для чтения -
UnsupportedOperationException- Если этот буфер не поддерживается доступным массивом
arrayOffset
public final int arrayOffset()
Возвращает смещение в массиве поддержки этого буфера первого элемента буфера ((необязательная операция)).
Если этот буфер поддерживается массивом, то позиция буфера p соответствует индексу массива p + arrayOffset().
Вызовите метод hasArray перед вызовом этого метода, чтобы убедиться, что этот буфер имеет доступный массив поддержки.
- Определено в:
-
arrayOffsetв классеBuffer - Возвращает:
- Смещение в массиве этого буфера первого элемента буфера
- Выбрасывает:
-
ReadOnlyBufferException- Если этот буфер поддерживается массивом, но является только для чтения -
UnsupportedOperationException- Если этот буфер не поддерживается доступным массивом
compact
public abstract FloatBuffer compact()
Компактует этот буфер ((необязательная операция)).
Значения с плавающей точкой между текущей позицией буфера и его пределом, если таковые имеются, копируются в начало буфера. То есть, значение с плавающей точкой с индексом p = position() копируется в индекс ноль, значение с плавающей точкой с индексом p + 1 копируется в индекс один, и так далее, пока значение с плавающей точкой с индексом limit() - 1 не будет скопировано в индекс n = limit() - 1 - p. Позиция буфера затем устанавливается в n+1, а его предел - в его ёмкость. Отметка, если она определена, отбрасывается.
Позиция буфера устанавливается в число скопированных значений с плавающей точкой, а не в ноль, чтобы вызов этого метода мог быть немедленно после вызова другого относительного метода put.
- Возвращает:
- Этот буфер
- Выбрасывает:
-
ReadOnlyBufferException- Если этот буфер только для чтения
isDirect
public abstract boolean isDirect()
Указывает, является ли этот буфер с плавающей точкой прямым.
toString
public String toString()
Возвращает строку, описывающую состояние этого буфера.
hashCode
public int hashCode()
Возвращает текущий код хэширования этого буфера.
Код хэширования буфера с плавающей точкой зависит только от его оставшихся элементов; то есть от элементов с position() до и включая элемент в limit() - 1.
Поскольку коды хэширования буферов зависят от содержимого, не рекомендуется использовать буферы в качестве ключей в картах хэшей или подобных структурах данных, если неизвестно, что их содержимое не изменится.
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- Текущий код хэширования этого буфера
- См. также:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
equals
public boolean equals(Object ob)
Определяет, равен ли этот буфер другому объекту.
Два буфера с плавающей точкой равны тогда и только тогда, когда:
У них одинаковый тип элементов,
У них одинаковое количество оставшихся элементов, и
Две последовательности оставшихся элементов, рассматриваемые независимо от своих начальных позиций, равны попарно. Этот метод считает два элемента с плавающей точкой
aиbравными, если(a == b) || (Float.isNaN(a) && Float.isNaN(b)). Значения-0.0и+0.0считаются равными, в отличие отFloat.equals(Object).
Буфер с плавающей точкой не равен любому другому типу объекта.
- Переопределяет:
-
equalsв классеObject - Параметры:
-
ob- Объект, с которым нужно сравнить этот буфер - Возвращает:
-
trueесли и только если этот буфер равен заданному объекту - См. также:
-
Object.hashCode(),HashMap
compareTo
public int compareTo(FloatBuffer that)
Сравнивает этот буфер с другим.
Два буфера с плавающей точкой сравниваются путём лексикографического сравнения их последовательностей оставшихся элементов, не учитывая начальную позицию каждой последовательности в соответствующем буфере. Пары элементов с плавающей точкой float сравниваются так, как если бы вы вызывали Float.compare(float,float), за исключением того, что -0.0 и 0.0 считаются равными. Float.NaN в этом методе считается равным самому себе и больше всех других значений с плавающей точкой (включая Float.POSITIVE_INFINITY).
Буфер с плавающей точкой не сравним ни с каким другим типом объекта.
- Определено в:
-
compareToв интерфейсеComparable<FloatBuffer> - Параметры:
-
that- сравниваемый объект. - Возвращает:
- Отрицательное целое число, ноль или положительное целое число, если этот буфер меньше, равен или больше заданного буфера
mismatch
public int mismatch(FloatBuffer that)
Находит и возвращает относительный индекс первого несовпадения между этим буфером и заданным буфером. Индекс относит к position каждого буфера и будет в диапазоне от 0 (включительно) до меньшего из remaining элементов в каждом буфере (исключительно).
Если два буфера имеют общую префиксную часть, то возвращаемый индекс равен длине общей префиксной части, и из этого следует, что между двумя буферами есть несовпадение в этом индексе в пределах соответствующих буферов. Если один буфер является правильным префиксом другого, то возвращаемый индекс равен меньшему из оставшихся элементов в каждом буфере, и из этого следует, что индекс действителен только для буфера с большим количеством оставшихся элементов. В противном случае несовпадения нет.
- Параметры:
-
that- Буфер с байтами, проверяемый на несовпадение с этим буфером - Возвращает:
- Относительный индекс первого несовпадения между этим и заданным буфером, иначе -1, если несовпадения нет.
- C момента:
- 11
order
public abstract ByteOrder order()
Возвращает порядок байтов этого буфера.
Порядок байтов буфера с плавающей точкой, созданного путём выделения памяти или путём обёртки существующего массива float, является native order базового оборудования. Порядок байтов буфера с плавающей точкой, созданного в виде представления буфера с байтами, соответствует порядку байтов буфера с байтами в момент создания представления.
- Возвращает:
- Порядок байтов этого буфера
© 1993, 2020, 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/11/docs/api/java.base/java/nio/FloatBuffer.html