- java.lang.Object
-
- java.nio.Buffer
-
- java.nio.FloatBuffer
-
- 实现的所有接口
-
Comparable<FloatBuffer>
public abstract class FloatBuffer extends Buffer implements Comparable<FloatBuffer>
浮动缓冲区。此类在浮点缓冲区上定义了四类操作:
相对
bulk get
方法,将连续的浮点数序列从此缓冲区转移到数组中; 和相对
bulk put
方法,将浮点数的浮点数或其他浮点缓冲区中的连续浮点数转移到此缓冲区中; 和compacting
浮点缓冲区的方法。
浮点缓冲区可以由
allocation
创建,它为缓冲区的内容分配空间,通过wrapping
将现有的浮点数组分配到缓冲区,或者创建现有字节缓冲区的view 。像字节缓冲区一样,浮点缓冲区是direct or non-direct 。 通过
wrap
方法创建的浮点缓冲区将是非直接的。 当且仅当字节缓冲区本身是直接的时,作为字节缓冲区视图创建的浮动缓冲区才是直接的。 可以通过调用isDirect
方法来确定浮动缓冲区是否是直接的。此类中没有返回值的方法被指定为返回调用它们的缓冲区。 这允许链接方法调用。
- 从以下版本开始:
- 1.4
-
-
方法摘要
所有方法 静态方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 static FloatBuffer
allocate(int capacity)
分配一个新的浮动缓冲区。float[]
array()
返回支持此缓冲区的float数组 (可选操作) 。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)
相对批量 获取方法。FloatBuffer
get(float[] dst, int offset, int length)
相对批量 获取方法。abstract float
get(int index)
绝对 获取方法。boolean
hasArray()
判断此缓冲区是否由可访问的float数组支持。int
hashCode()
返回此缓冲区的当前哈希码。abstract boolean
isDirect()
判断此浮点缓冲区是否为直接缓冲区。int
mismatch(FloatBuffer that)
查找并返回此缓冲区与给定缓冲区之间第一个不匹配的相对索引。abstract ByteOrder
order()
检索此缓冲区的字节顺序。abstract FloatBuffer
put(float f)
相对 put方法 (可选操作) 。FloatBuffer
put(float[] src)
相对批量 放置方法 (可选操作) 。FloatBuffer
put(float[] src, int offset, int length)
相对批量 放置方法 (可选操作) 。abstract FloatBuffer
put(int index, float f)
绝对 放法 (可选操作) 。FloatBuffer
put(FloatBuffer src)
相对批量 放置方法 (可选操作) 。abstract FloatBuffer
slice()
创建一个新的浮点缓冲区,其内容是此缓冲区内容的共享子序列。String
toString()
返回总结此缓冲区状态的字符串。static FloatBuffer
wrap(float[] array)
将float数组包装到缓冲区中。static FloatBuffer
wrap(float[] array, int offset, int length)
将float数组包装到缓冲区中。
-
-
-
方法详细信息
-
allocate
public static FloatBuffer allocate(int capacity)
分配一个新的浮动缓冲区。新缓冲区的位置将为零,其限制将是其容量,其标记将是未定义的,其每个元素将初始化为零,其字节顺序将为底层硬件的
native order
。 它将有一个backing array
,其array offset
将为零。- 参数
-
capacity
- 新缓冲区的容量,以浮点数表示 - 结果
- 新的浮动缓冲区
- 异常
-
IllegalArgumentException
- 如果capacity
是负整数
-
wrap
public static FloatBuffer wrap(float[] array, int offset, int length)
将float数组包装到缓冲区中。新缓冲区将由给定的float数组支持; 也就是说,对缓冲区的修改将导致数组被修改,反之亦然。 新缓冲区的容量将为
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)
将float数组包装到缓冲区中。新缓冲区将由给定的float数组支持; 也就是说,对缓冲区的修改将导致数组被修改,反之亦然。 新缓冲区的容量和限制将为
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方法(可选操作) 。将给定的float写入当前位置的缓冲区,然后递增位置。
- 参数
-
f
- 要写入的浮点数 - 结果
- 这个缓冲区
- 异常
-
BufferOverflowException
- 如果此缓冲区的当前位置不小于其限制 -
ReadOnlyBufferException
- 如果此缓冲区是只读的
-
get
public abstract float get(int index)
绝对获取方法。 读取给定索引处的浮点数。- 参数
-
index
- 将从中读取浮点数的索引 - 结果
- 给定索引处的浮点数
- 异常
-
IndexOutOfBoundsException
- 如果index
为负数或不小于缓冲区的限制
-
put
public abstract FloatBuffer put(int index, float f)
绝对放法(可选操作) 。将给定的float写入给定索引处的此缓冲区。
- 参数
-
index
- 将写入float的索引 -
f
- 要写入的浮点值 - 结果
- 这个缓冲区
- 异常
-
IndexOutOfBoundsException
- 如果index
为负数或不小于缓冲区的限制 -
ReadOnlyBufferException
- 如果此缓冲区是只读的
-
get
public FloatBuffer get(float[] dst, int offset, int length)
相对批量获取方法。此方法将浮动从此缓冲区传输到给定的目标阵列。 如果缓冲区中剩余的浮点数少于满足请求所需的浮点数,即
length
>
remaining()
,则不会传输任何浮点数并抛出BufferUnderflowException
。否则,此方法将
length
浮动从此缓冲区复制到给定数组中,从此缓冲区的当前位置开始并在阵列中的给定偏移处开始。 然后,此缓冲区的位置增加length
。换句话说,调用
src.get(dst, off, len)
形式的此方法与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)
相对批量获取方法。此方法将浮动从此缓冲区传输到给定的目标阵列。 调用
src.get(a)
形式的此方法的行为与调用的方式完全相同src.get(a, 0, a.length)
- 参数
-
dst
- 目标阵列 - 结果
- 这个缓冲区
- 异常
-
BufferUnderflowException
- 如果此缓冲区中剩余的浮点数少于length
-
put
public FloatBuffer put(FloatBuffer src)
相对批量放置方法(可选操作) 。此方法将剩余在给定源缓冲区中的浮点数传输到此缓冲区中。 如果源缓冲区中剩余的浮点数多于此缓冲区中的浮点数,即
src.remaining()
>
remaining()
,则不会传输任何浮点数并抛出BufferOverflowException
。否则,此方法将n =
src.remaining()
浮动从给定缓冲区复制到此缓冲区中,从每个缓冲区的当前位置开始。 然后两个缓冲区的位置增加n 。换句话说,调用
dst.put(src)
形式的此方法与dst.put(src)
具有完全相同的效果while (src.hasRemaining()) dst.put(src.get());
除了它首先检查此缓冲区中是否有足够的空间,它可能更有效。- 参数
-
src
- 要从中读取浮点数的源缓冲区; 一定不能是这个缓冲区 - 结果
- 这个缓冲区
- 异常
-
BufferOverflowException
- 如果此缓冲区中没有足够的空间用于源缓冲区中的剩余浮点数 -
IllegalArgumentException
- 如果源缓冲区是此缓冲区 -
ReadOnlyBufferException
- 如果此缓冲区是只读的
-
put
public FloatBuffer put(float[] src, int offset, int length)
相对批量放置方法(可选操作) 。此方法将浮动从给定的源数组传输到此缓冲区。 如果要从数组中复制的浮点数多于保留在此缓冲区中的浮点数,即
length
>
remaining()
,则不会传输任何浮点数并抛出BufferOverflowException
。否则,此方法将
length
浮动从给定数组复制到此缓冲区,从数组中的给定偏移量开始,并在此缓冲区的当前位置。 然后,此缓冲区的位置增加length
。换句话说,调用
dst.put(src, off, len)
形式的此方法与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)
相对批量放置方法(可选操作) 。此方法将给定源float数组的整个内容传输到此缓冲区。 调用
dst.put(a)
形式的此方法的行为与调用的方式完全相同dst.put(a, 0, a.length)
- 参数
-
src
- 源数组 - 结果
- 这个缓冲区
- 异常
-
BufferOverflowException
- 如果此缓冲区中没有足够的空间 -
ReadOnlyBufferException
- 如果此缓冲区是只读的
-
hasArray
public final boolean hasArray()
判断此缓冲区是否由可访问的float数组支持。如果此方法返回
true
则可以安全地调用array
和arrayOffset
方法。
-
array
public final float[] array()
- Specified by:
-
array
类Buffer
- 结果
- 支持此缓冲区的数组
- 异常
-
ReadOnlyBufferException
- 如果此缓冲区由数组支持但是只读 -
UnsupportedOperationException
- 如果此缓冲区未由可访问的数组支持
-
arrayOffset
public final int arrayOffset()
返回此缓冲区缓冲区第一个元素的后备数组中的偏移量(可选操作) 。如果此缓冲区由数组支持,则缓冲区位置p对应于数组索引p +
arrayOffset()
。在调用此方法之前调用
hasArray
方法,以确保此缓冲区具有可访问的后备阵列。- Specified by:
-
arrayOffset
类Buffer
- 结果
- 缓冲区第一个元素的缓冲区数组中的偏移量
- 异常
-
ReadOnlyBufferException
- 如果此缓冲区由数组支持但是只读 -
UnsupportedOperationException
- 如果此缓冲区未由可访问的数组支持
-
compact
public abstract FloatBuffer compact()
压缩此缓冲区(可选操作) 。缓冲区当前位置与其限制之间的浮点(如果有)将复制到缓冲区的开头。 也就是说,索引p =
position()
处的浮点数被复制到索引0,索引p + 1处的浮点数被复制到索引1,依此类推,直到指数limit()
处的浮点数被复制到索引n =limit()
-1
- p 。 然后将缓冲区的位置设置为n + 1,并将其限制设置为其容量。 标记(如果已定义)将被丢弃。缓冲区的位置设置为复制的浮点数,而不是零,因此可以通过调用另一个相对put方法立即调用此方法。
- 结果
- 这个缓冲区
- 异常
-
ReadOnlyBufferException
- 如果此缓冲区是只读的
-
isDirect
public abstract boolean isDirect()
判断此浮点缓冲区是否为直接缓冲区。
-
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) || (Float.isNaN(a) && Float.isNaN(b))
此方法认为两个浮点元素a
和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
值(包括Float.POSITIVE_INFINITY
)。浮动缓冲区不能与任何其他类型的对象相比。
- Specified by:
-
compareTo
在界面Comparable<FloatBuffer>
- 参数
-
that
- 要比较的对象。 - 结果
- 此缓冲区小于,等于或大于给定缓冲区的负整数,零或正整数
-
mismatch
public int mismatch(FloatBuffer that)
查找并返回此缓冲区与给定缓冲区之间第一个不匹配的相对索引。 索引相对于每个缓冲区的position
,并且将在0(包括)范围内,直到每个缓冲区中的较小的remaining
元素(不包括)。如果两个缓冲区共享一个公共前缀,则返回的索引是公共前缀的长度,并且随后在相应缓冲区内该索引处的两个缓冲区之间存在不匹配。 如果一个缓冲区是另一个缓冲区的正确前缀,则返回的索引是每个缓冲区中剩余元素中较小的一个,并且随后索引仅对具有较多剩余元素的缓冲区有效。 否则,没有不匹配。
- 参数
-
that
- 要测试与此缓冲区不匹配的字节缓冲区 - 结果
- 此与给定缓冲区之间的第一个不匹配的相对索引,否则为-1,如果没有不匹配。
- 从以下版本开始:
- 11
-
order
public abstract ByteOrder order()
检索此缓冲区的字节顺序。通过分配或通过包装现有
float
数组创建的浮点缓冲区的字节顺序是底层硬件的native order
。 创建为字节缓冲区的view的浮点缓冲区的字节顺序是创建视图时字节缓冲区的字节顺序。- 结果
- This buffer's byte order
-
-