public abstract class FloatBuffer
extends Buffer
implements Comparable<FloatBuffer>
java.lang.Object | ||
↳ | java.nio.Buffer | |
↳ | java.nio.FloatBuffer |
一个浮点缓冲区。
这个类在float缓冲区上定义了四类操作:
相对 bulk get
将连续浮点数序列从此缓冲区转移到数组中的方法; 和
相对 bulk put
将浮点数组或其他浮点缓冲区的连续序列传输到此缓冲区的方法; 和
方法 compacting
,
duplicating
和
slicing
float缓冲区。
浮点缓冲区可以通过 allocation
(为缓冲区的内容分配空间),
wrapping
现有的浮点数组创建到缓冲区中,或通过创建现有字节缓冲区的 view来创建。
像字节缓冲区一样,浮点缓冲区是direct or non-direct 。 通过此类的wrap方法创建的浮点缓冲区将是非直接的。 当且仅当字节缓冲区本身是直接的时,作为字节缓冲区视图创建的浮动缓冲区才是直接的。 通过调用isDirect
方法可以确定浮动缓冲区是否是直接的。
指定此类中不具有返回值的方法以返回调用它们的缓冲区。 这允许方法调用被链接。
Public methods |
|
---|---|
static FloatBuffer |
allocate(int capacity) 分配一个新的浮点缓冲区。 |
final float[] |
array() 返回支持此缓冲区的浮点数组 (可选操作) 。 |
final int |
arrayOffset() 返回缓冲区第一个元素 (可选操作)的此缓冲区的后备数组内的偏移量。 |
abstract FloatBuffer |
asReadOnlyBuffer() 创建一个共享此缓冲区内容的新的只读浮动缓冲区。 |
abstract FloatBuffer |
compact() 压缩此缓冲区 (可选操作) 。 |
int |
compareTo(FloatBuffer that) 将此缓冲区与另一个进行比较。 |
abstract FloatBuffer |
duplicate() 创建一个共享此缓冲区内容的新浮点缓冲区。 |
boolean |
equals(Object ob) 告诉这个缓冲区是否等于另一个对象。 |
FloatBuffer |
get(float[] dst) 相对批量 获取方法。 |
abstract float |
get() 相对 获得方法。 |
FloatBuffer |
get(float[] dst, int offset, int length) 相对批量 获取方法。 |
abstract float |
get(int index) 绝对 get方法。 |
final boolean |
hasArray() 告诉该缓冲区是否由可访问的浮点数组支持。 |
int |
hashCode() 返回此缓冲区的当前哈希码。 |
abstract boolean |
isDirect() 告诉这个浮点缓冲区是否是直接的。 |
abstract ByteOrder |
order() 检索此缓冲区的字节顺序。 |
FloatBuffer |
put(float[] src, int offset, int length) 相对批量 放置方法 (可选操作) 。 |
FloatBuffer |
put(FloatBuffer src) 相对批量 放置方法 (可选操作) 。 |
abstract FloatBuffer |
put(float f) 相对 放置方法 (可选操作) 。 |
abstract FloatBuffer |
put(int index, float f) 绝对 放置方法 (可选操作) 。 |
final FloatBuffer |
put(float[] src) 相对批量 放置方法 (可选操作) 。 |
abstract FloatBuffer |
slice() 创建一个新的浮点缓冲区,其内容是此缓冲区内容的共享子序列。 |
String |
toString() 返回汇总此缓冲区状态的字符串。 |
static FloatBuffer |
wrap(float[] array) 将浮点数组包装到缓冲区中。 |
static FloatBuffer |
wrap(float[] array, int offset, int length) 将浮点数组包装到缓冲区中。 |
Inherited methods |
|
---|---|
From class java.nio.Buffer
|
|
From class java.lang.Object
|
|
From interface java.lang.Comparable
|
FloatBuffer allocate (int capacity)
分配一个新的浮点缓冲区。
新的缓冲区的位置将为零,其限制将是其容量,其标记将是未定义的,并且其每个元素将被初始化为零。 它将有一个 backing array
,其
array offset
将为零。
Parameters | |
---|---|
capacity |
int : The new buffer's capacity, in floats |
Returns | |
---|---|
FloatBuffer |
The new float buffer |
Throws | |
---|---|
IllegalArgumentException |
If the capacity is a negative integer |
float[] array ()
返回支持此缓冲区的浮点数组 (可选操作) 。
修改此缓冲区的内容将导致返回的数组内容被修改,反之亦然。
在调用此方法之前调用 hasArray
方法,以确保此缓冲区具有可访问的后备数组。
Returns | |
---|---|
float[] |
The array that backs this buffer |
Throws | |
---|---|
ReadOnlyBufferException |
If this buffer is backed by an array but is read-only |
UnsupportedOperationException |
If this buffer is not backed by an accessible array |
int arrayOffset ()
返回缓冲区第一个元素 (可选操作)的此缓冲区的后备数组内的偏移量。
如果此缓冲区由数组支持,则缓冲区位置 p对应于数组索引 p + arrayOffset() 。
在调用此方法之前调用 hasArray
方法,以确保此缓冲区具有可访问的后备数组。
Returns | |
---|---|
int |
The offset within this buffer's array of the first element of the buffer |
Throws | |
---|---|
ReadOnlyBufferException |
If this buffer is backed by an array but is read-only |
UnsupportedOperationException |
If this buffer is not backed by an accessible array |
FloatBuffer asReadOnlyBuffer ()
创建一个共享此缓冲区内容的新的只读浮动缓冲区。
新缓冲区的内容将是该缓冲区的内容。 此缓冲区内容的更改将在新缓冲区中可见; 但是新的缓冲区本身将是只读的,并且不允许修改共享内容。 两个缓冲区的位置,限制和标记值将是独立的。
新缓冲区的容量,限制,位置和标记值将与该缓冲区的相同。
如果此缓冲区本身是只读的,则此方法的行为方式与 duplicate
方法完全相同。
Returns | |
---|---|
FloatBuffer |
The new, read-only float buffer |
FloatBuffer compact ()
压缩此缓冲区 (可选操作) 。
缓冲区当前位置与其限制之间的浮点数(如果有)会被复制到缓冲区的开始处。 也就是说,将索引p = position()处的浮点值复制到索引零,将索引p + 1处的浮点数复制到索引1,依此类推,直到将索引为limit() - 1的浮点数复制到索引n = limit() - 1 - p 。 然后将缓冲区的位置设置为n + 1,并将其限制设置为其容量。 标记(如果已定义)将被丢弃。
缓冲区的位置被设置为复制的浮点数,而不是零,因此,可以立即调用另一个相对 放置方法来调用此方法。
Returns | |
---|---|
FloatBuffer |
This buffer |
Throws | |
---|---|
ReadOnlyBufferException |
If this buffer is read-only |
int compareTo (FloatBuffer that)
将此缓冲区与另一个进行比较。
通过按照字典顺序比较剩余元素的序列来比较两个浮点缓冲区,而不考虑每个序列在其相应缓冲区内的起始位置。 对float
元素进行比较,就好像通过调用compare(float, float)
,除了-0.0
和0.0
被认为是相等的。 该方法认为Float.NaN
等于自身并且大于其他所有float
值(包括Float.POSITIVE_INFINITY
)。
浮点缓冲区不能与任何其他类型的对象进行比较。
Parameters | |
---|---|
that |
FloatBuffer
|
Returns | |
---|---|
int |
A negative integer, zero, or a positive integer as this buffer is less than, equal to, or greater than the given buffer |
FloatBuffer duplicate ()
创建一个共享此缓冲区内容的新浮点缓冲区。
新缓冲区的内容将是该缓冲区的内容。 这个缓冲区内容的改变将在新缓冲区中可见,反之亦然; 两个缓冲区的位置,限制和标记值将是独立的。
新缓冲区的容量,限制,位置和标记值将与该缓冲区的相同。 当且仅当此缓冲区是直接的时,新缓冲区才是直接的,并且只有在此缓冲区是只读的情况下,它才会是只读的。
Returns | |
---|---|
FloatBuffer |
The new float buffer |
boolean equals (Object ob)
告诉这个缓冲区是否等于另一个对象。
两个浮动缓冲区相等,当且仅当,
它们具有相同的元素类型,
他们有相同数量的剩余元素,并且
独立于其起始位置考虑的剩余元素的两个序列是逐点相等的。 该方法考虑两个浮动元件a
和b
是如果等于(a == b) || (Float.isNaN(a) && Float.isNaN(b))
。 值-0.0
和+0.0
被认为是相同的,不像equals(Object)
。
浮点缓冲区不等于任何其他类型的对象。
Parameters | |
---|---|
ob |
Object : The object to which this buffer is to be compared |
Returns | |
---|---|
boolean |
true if, and only if, this buffer is equal to the given object |
FloatBuffer get (float[] dst)
相对批量 获取方法。
该方法将浮动缓冲区从此缓冲区转移到给定的目标数组中。 表单src.get(a)的这种方法的调用的行为与调用完全相同
src.get(a, 0, a.length)
Parameters | |
---|---|
dst |
float
|
Returns | |
---|---|
FloatBuffer |
This buffer |
Throws | |
---|---|
BufferUnderflowException |
If there are fewer than length floats remaining in this buffer |
float get ()
相对获得方法。 在此缓冲区的当前位置读取浮点数,然后递增该位置。
Returns | |
---|---|
float |
The float at the buffer's current position |
Throws | |
---|---|
BufferUnderflowException |
If the buffer's current position is not smaller than its limit |
FloatBuffer get (float[] dst, int offset, int length)
相对批量 获取方法。
该方法将浮动缓冲区从此缓冲区转移到给定的目标数组中。 如果缓冲区中剩余的浮点数少于满足请求所需的浮点数,也就是说,如果length > remaining() ,则不传送浮点数并且抛出BufferUnderflowException
。
否则,此方法将length浮点数从此缓冲区复制到给定数组中,从此缓冲区的当前位置开始,并位于数组中给定的偏移量处。 此缓冲区的位置然后增加length 。
换句话说,调用表单 src.get(dst, off, len)的这种方法与 循环具有完全相同的效果
for (int i = off; i < off + len; i++) dst[i] = src.get();except that it first checks that there are sufficient floats in this buffer and it is potentially much more efficient.
Parameters | |
---|---|
dst |
float : The array into which floats are to be written |
offset |
int : The offset within the array of the first float to be written; must be non-negative and no larger than dst.length |
length |
int : The maximum number of floats to be written to the given array; must be non-negative and no larger than dst.length - offset |
Returns | |
---|---|
FloatBuffer |
This buffer |
Throws | |
---|---|
BufferUnderflowException |
If there are fewer than length floats remaining in this buffer |
IndexOutOfBoundsException |
If the preconditions on the offset and length parameters do not hold |
float get (int index)
绝对get方法。 读取给定索引处的浮点数。
Parameters | |
---|---|
index |
int : The index from which the float will be read |
Returns | |
---|---|
float |
The float at the given index |
Throws | |
---|---|
IndexOutOfBoundsException |
If index is negative or not smaller than the buffer's limit |
boolean hasArray ()
告诉该缓冲区是否由可访问的浮点数组支持。
如果此方法返回 true,则可以安全地调用 array
和 arrayOffset
方法。
Returns | |
---|---|
boolean |
true if, and only if, this buffer is backed by an array and is not read-only |
int hashCode ()
返回此缓冲区的当前哈希码。
浮点缓冲区的哈希码仅依赖于其余的元素; 也就是说,从position()到limit() - 1的元素并包括该元素。
由于缓冲区散列码与内容相关,因此除非知道其内容不会改变,否则在散列映射或类似数据结构中使用缓冲区作为键是不可取的。
Returns | |
---|---|
int |
The current hash code of this buffer |
boolean isDirect ()
告诉这个浮点缓冲区是否是直接的。
Returns | |
---|---|
boolean |
true if, and only if, this buffer is direct |
ByteOrder order ()
检索此缓冲区的字节顺序。
通过分配或包装现有的float阵列创建的浮点缓冲区的字节顺序是底层硬件的 native order
。 创建为字节缓冲区view的浮点缓冲区的字节顺序是创建视图时字节缓冲区的字节顺序。
Returns | |
---|---|
ByteOrder |
This buffer's byte order |
FloatBuffer put (float[] src, int offset, int length)
相对批量 放置方法 (可选操作) 。
此方法将浮点数从给定的源数组中传送到此缓冲区。 如果从阵列中复制的浮点数多于保留在此缓冲区中的浮点数,也就是说,如果length > remaining() ,则不传输浮点数并且抛出BufferOverflowException
。
否则,此方法会将length浮点数从给定数组复制到此缓冲区,从数组中给定的偏移量和此缓冲区的当前位置开始。 然后该缓冲区的位置增加length 。
换句话说,调用这种形式为 dst.put(src, off, len)的方法与 循环具有完全相同的效果
for (int i = off; i < off + len; i++) dst.put(a[i]);except that it first checks that there is sufficient space in this buffer and it is potentially much more efficient.
Parameters | |
---|---|
src |
float : The array from which floats are to be read |
offset |
int : The offset within the array of the first float to be read; must be non-negative and no larger than array.length |
length |
int : The number of floats to be read from the given array; must be non-negative and no larger than array.length - offset |
Returns | |
---|---|
FloatBuffer |
This buffer |
Throws | |
---|---|
BufferOverflowException |
If there is insufficient space in this buffer |
IndexOutOfBoundsException |
If the preconditions on the offset and length parameters do not hold |
ReadOnlyBufferException |
If this buffer is read-only |
FloatBuffer put (FloatBuffer src)
相对批量 放置方法 (可选操作) 。
此方法将剩余在给定源缓冲区中的浮点数传送到此缓冲区。 如果源缓冲区中剩余的浮点数多于此缓冲区中的浮点数,也就是说,如果src.remaining() > remaining() ,则不传输浮点数并引发BufferOverflowException
。
否则,此方法将n = src.remaining()浮点数从给定缓冲区复制到此缓冲区,从每个缓冲区的当前位置开始。 然后两个缓冲器的位置增加n 。
换句话说,形式为 dst.put(src)的此方法的调用与 循环具有完全相同的效果
while (src.hasRemaining()) dst.put(src.get());except that it first checks that there is sufficient space in this buffer and it is potentially much more efficient.
Parameters | |
---|---|
src |
FloatBuffer : The source buffer from which floats are to be read; must not be this buffer |
Returns | |
---|---|
FloatBuffer |
This buffer |
Throws | |
---|---|
BufferOverflowException |
If there is insufficient space in this buffer for the remaining floats in the source buffer |
IllegalArgumentException |
If the source buffer is this buffer |
ReadOnlyBufferException |
If this buffer is read-only |
FloatBuffer put (float f)
相对 放置方法 (可选操作) 。
将给定的float写入此缓冲区的当前位置,然后递增该位置。
Parameters | |
---|---|
f |
float : The float to be written |
Returns | |
---|---|
FloatBuffer |
This buffer |
Throws | |
---|---|
BufferOverflowException |
If this buffer's current position is not smaller than its limit |
ReadOnlyBufferException |
If this buffer is read-only |
FloatBuffer put (int index, float f)
绝对 放置方法 (可选操作) 。
将给定的float写入该缓冲区中给定的索引处。
Parameters | |
---|---|
index |
int : The index at which the float will be written |
f |
float : The float value to be written |
Returns | |
---|---|
FloatBuffer |
This buffer |
Throws | |
---|---|
IndexOutOfBoundsException |
If index is negative or not smaller than the buffer's limit |
ReadOnlyBufferException |
If this buffer is read-only |
FloatBuffer put (float[] src)
相对批量 放置方法 (可选操作) 。
此方法将给定源浮点数组的全部内容传输到此缓冲区中。 表单dst.put(a)的这种方法的调用的行为与调用完全相同
dst.put(a, 0, a.length)
Parameters | |
---|---|
src |
float
|
Returns | |
---|---|
FloatBuffer |
This buffer |
Throws | |
---|---|
BufferOverflowException |
If there is insufficient space in this buffer |
ReadOnlyBufferException |
If this buffer is read-only |
FloatBuffer slice ()
创建一个新的浮点缓冲区,其内容是此缓冲区内容的共享子序列。
新缓冲区的内容将从此缓冲区的当前位置开始。 这个缓冲区内容的改变将在新缓冲区中可见,反之亦然; 两个缓冲区的位置,限制和标记值将是独立的。
新缓冲区的位置将为零,其容量和限制将为剩余在此缓冲区中的浮点数,并且其标记将不确定。 当且仅当此缓冲区是直接的时,新缓冲区才是直接的,并且只有在此缓冲区是只读的情况下,它才会是只读的。
Returns | |
---|---|
FloatBuffer |
The new float buffer |
FloatBuffer wrap (float[] array)
将浮点数组包装到缓冲区中。
新缓冲区将由给定的浮点数组支持; 也就是说,修改缓冲区将导致数组被修改,反之亦然。 新缓冲区的容量和限制将为array.length ,其位置将为零,并且其标记将不确定。 其 backing array
将是给定的数组,其
array offset
将为零。
Parameters | |
---|---|
array |
float : The array that will back this buffer |
Returns | |
---|---|
FloatBuffer |
The new float buffer |
FloatBuffer wrap (float[] array, int offset, int length)
将浮点数组包装到缓冲区中。
新缓冲区将由给定的浮点数组支持; 也就是说,修改缓冲区将导致数组被修改,反之亦然。 新缓冲区容量为array.length ,位置为offset ,限制为offset + length ,其标记未定义。 其 backing array
将是给定的阵列,其
array offset
将为零。
Parameters | |
---|---|
array |
float : The array that will back the new buffer |
offset |
int : The offset of the subarray to be used; must be non-negative and no larger than array.length. The new buffer's position will be set to this value. |
length |
int : The length of the subarray to be used; must be non-negative and no larger than array.length - offset. The new buffer's limit will be set to offset + length. |
Returns | |
---|---|
FloatBuffer |
The new float buffer |
Throws | |
---|---|
IndexOutOfBoundsException |
If the preconditions on the offset and length parameters do not hold |