Класс 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,duplicatingиslicingбуфера с плавающей точкой.
Буферы с плавающей точкой могут быть созданы либо с помощью allocation, который выделяет память для содержимого буфера, либо с помощью wrapping существующего массива с плавающей точкой в буфер, или путем создания представления существующего буфера байтов.
Как и буфер байтов, буфер с плавающей точкой может быть прямым или непрямым. Буфер с плавающей точкой, созданный с помощью методов этого класса, будет непрямым. Буфер с плавающей точкой, созданный как представление буфера байтов, будет прямым, только если сам буфер байтов является прямым. Прямой ли буфер с плавающей точкой или нет, можно определить, вызвав метод 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() Определяет, является ли этот буфер с плавающей точкой прямым. |
abstract ByteOrder |
order() Получает порядок байтов этого буфера. |
abstract FloatBuffer |
put(float f) Относительный метод put (необязательная операция). |
FloatBuffer |
put(float[] src) Относительный метод put для блоков данных (необязательная операция). |
FloatBuffer |
put(float[] src,
int offset,
int length) Относительный метод put для блоков данных (необязательная операция). |
FloatBuffer |
put(FloatBuffer src) Относительный метод put для блоков данных (необязательная операция). |
abstract FloatBuffer |
put(int index,
float f) Абсолютный метод 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)
Выделяет новый буфер с плавающей запятой.
Положение нового буфера будет равно нулю, его предел — его емкости, метка будет неопределенной, и каждый его элемент будет инициализирован нулем. У него будет backing array, и его array offset будет равно нулю.
- Параметры:
-
capacity- Емкость нового буфера в числах с плавающей запятой - Возвращает:
- Новый буфер с плавающей запятой
- Исключение:
-
IllegalArgumentException- Еслиcapacityявляется отрицательным целым числом
wrap
public static FloatBuffer wrap(float[] array,
int offset,
int length) Оборачивает массив чисел с плавающей запятой в буфер.
Новый буфер будет поддерживаться заданным массивом чисел с плавающей запятой; другими словами, изменения в буфере приведут к изменениям в массиве и наоборот. Емкость нового буфера будет array.length, его положение будет offset, его предел будет offset + length, а его метка — неопределённой. Его 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, его положение — нулевым, а метка — неопределённой. Его 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- объект для сравнения. - Возвращает:
- Отрицательное целое число, ноль или положительное целое число, если этот буфер меньше, равен или больше, чем заданный буфер
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.