- 所有已实现的接口:
Comparable<FloatBuffer>
此类定义了对浮动缓冲区的四类操作:
绝对和相对
bulk get方法,将连续的浮点数序列从该缓冲区传输到数组中;绝对和相对
bulk put方法,将连续的浮点序列从浮点数组或其他一些浮点缓冲区传输到此缓冲区;compacting浮动缓冲区的方法。
浮点缓冲区可以通过 allocation 创建,它为缓冲区的内容分配空间,通过 wrapping 将现有浮点数组放入缓冲区,或者通过创建现有字节缓冲区的 看法 来创建。
与字节缓冲区一样,浮点缓冲区是 直接的或者非直接的 。通过此类的 wrap 方法创建的浮点缓冲区将是非直接的。当且仅当字节缓冲区本身是直接的时,作为字节缓冲区的视图创建的浮点缓冲区将是直接的。浮动缓冲区是否直接可以通过调用 isDirect 方法来确定。
此类中没有返回值的方法被指定为返回调用它们的缓冲区。这允许链接方法调用。
- 自从:
- 1.4
-
方法总结
修饰符和类型方法描述static FloatBufferallocate(int capacity) 分配一个新的浮动缓冲区。final float[]array()返回支持此缓冲区的浮点数组(可选操作).final int返回缓冲区第一个元素在此缓冲区的后备数组中的偏移量(可选操作).abstract FloatBuffer创建一个共享此缓冲区内容的新的只读浮点缓冲区。final FloatBufferclear()清除此缓冲区。abstract FloatBuffercompact()压缩此缓冲区(可选操作).intcompareTo(FloatBuffer that) 将此缓冲区与另一个缓冲区进行比较。abstract FloatBuffer创建一个共享此缓冲区内容的新浮点缓冲区。boolean告知此缓冲区是否等于另一个对象。final FloatBufferflip()翻转此缓冲区。abstract floatget()相对的get方法。get(float[] dst) 相对体积get方法。get(float[] dst, int offset, int length) 相对体积get方法。abstract floatget(int index) 绝对get方法。get(int index, float[] dst) 绝对散装get方法。get(int index, float[] dst, int offset, int length) 绝对散装get方法。final booleanhasArray()告知此缓冲区是否由可访问的浮点数组支持。inthashCode()返回此缓冲区的当前哈希码。abstract booleanisDirect()判断这个浮点缓冲区是否是直接的。final FloatBufferlimit(int newLimit) 设置此缓冲区的限制。final FloatBuffermark()在其位置设置此缓冲区的标记。intmismatch(FloatBuffer that) 查找并返回此缓冲区与给定缓冲区之间第一个不匹配的相对索引。abstract ByteOrderorder()检索此缓冲区的字节顺序。final FloatBufferposition(int newPosition) 设置此缓冲区的位置。abstract FloatBufferput(float f) 相对的put方法(可选操作).final FloatBufferput(float[] src) 相对体积put方法(可选操作).put(float[] src, int offset, int length) 相对体积put方法(可选操作).abstract FloatBufferput(int index, float f) 绝对put方法(可选操作).put(int index, float[] src) 绝对散装put方法(可选操作).put(int index, float[] src, int offset, int length) 绝对散装put方法(可选操作).put(int index, FloatBuffer src, int offset, int length) 绝对散装put方法(可选操作).put(FloatBuffer src) 相对体积put方法(可选操作).final FloatBufferreset()将此缓冲区的位置重置为先前标记的位置。final FloatBufferrewind()倒带此缓冲区。abstract FloatBufferslice()创建一个新的浮点缓冲区,其内容是此缓冲区内容的共享子序列。abstract FloatBufferslice(int index, int length) 创建一个新的浮点缓冲区,其内容是此缓冲区内容的共享子序列。toString()返回总结此缓冲区状态的字符串。static FloatBufferwrap(float[] array) 将浮点数组包装到缓冲区中。static FloatBufferwrap(float[] array, int offset, int length) 将浮点数组包装到缓冲区中。在类 java.nio.Buffer 中声明的方法
capacity, hasRemaining, isReadOnly, limit, position, remaining
-
方法详情
-
allocate
分配一个新的浮动缓冲区。新缓冲区的位置将为零,其限制为其容量,其标记为未定义,其每个元素都将初始化为零,其字节顺序将为底层硬件的
native order。它会有一个backing array,它的array offset将为零。- 参数:
capacity- 新缓冲区的容量,以浮点数表示- 返回:
- 新的浮动缓冲区
- 抛出:
IllegalArgumentException- 如果capacity是负整数
-
wrap
将浮点数组包装到缓冲区中。新缓冲区将由给定的 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
将浮点数组包装到缓冲区中。新缓冲区将由给定的 float 数组支持;也就是说,对缓冲区的修改将导致数组被修改,反之亦然。新缓冲区的容量和限制将为
array.length,其位置将为零,其标记将未定义,其字节顺序将为底层硬件的native order。它的backing array将是给定的数组,而它的array offset将为零。- 参数:
array- 将支持此缓冲区的数组- 返回:
- 新的浮动缓冲区
-
slice
创建一个新的浮点缓冲区,其内容是此缓冲区内容的共享子序列。新缓冲区的内容将从该缓冲区的当前位置开始。对此缓冲区内容的更改将在新缓冲区中可见,反之亦然;两个缓冲区的位置、限制和标记值将是独立的。
新缓冲区的位置将为零,其容量和限制将为该缓冲区中剩余的浮点数,其标记将未定义,其字节顺序将与该缓冲区的字节顺序相同。当且仅当此缓冲区是直接的时,新缓冲区将是直接的,并且当且仅当此缓冲区是只读的时,它将是只读的。
-
slice
创建一个新的浮点缓冲区,其内容是此缓冲区内容的共享子序列。新缓冲区的内容将从该缓冲区中的位置
index开始,并将包含length个元素。对此缓冲区内容的更改将在新缓冲区中可见,反之亦然;两个缓冲区的位置、限制和标记值将是独立的。新缓冲区的位置将为零,其容量和限制将为
length,其标记将未定义,其字节顺序将与该缓冲区的字节顺序相同。当且仅当此缓冲区是直接的时,新缓冲区将是直接的,并且当且仅当此缓冲区是只读的时,它将是只读的。- 指定者:
slice在类Buffer中- 参数:
index- 该缓冲区中新缓冲区内容开始的位置;必须为非负且不大于limit()length- 新缓冲区将包含的元素数;必须为非负且不大于limit() - index- 返回:
- 新缓冲区
- 抛出:
IndexOutOfBoundsException- 如果index为负或大于limit(),则length为负,或length > limit() - index- 自从:
- 13
-
duplicate
创建一个共享此缓冲区内容的新浮点缓冲区。新缓冲区的内容将是该缓冲区的内容。对此缓冲区内容的更改将在新缓冲区中可见,反之亦然;两个缓冲区的位置、限制和标记值将是独立的。
新缓冲区的容量、限制、位置、标记值和字节顺序将与该缓冲区的相同。当且仅当此缓冲区是直接的时,新缓冲区将是直接的,并且当且仅当此缓冲区是只读的时,它将是只读的。
-
asReadOnlyBuffer
创建一个共享此缓冲区内容的新的只读浮点缓冲区。新缓冲区的内容将是该缓冲区的内容。对此缓冲区内容的更改将在新缓冲区中可见;然而,新缓冲区本身将是只读的,并且不允许修改共享内容。两个缓冲区的位置、限制和标记值将是独立的。
新缓冲区的容量、限制、位置、标记值和字节顺序将与该缓冲区的相同。
如果此缓冲区本身是只读的,则此方法的行为方式与
duplicate方法完全相同。- 返回:
- 新的只读浮动缓冲区
-
get
public abstract float get()相对的get方法。读取此缓冲区当前位置的浮点数,然后递增该位置。- 返回:
- 缓冲区当前位置的浮点数
- 抛出:
BufferUnderflowException- 如果缓冲区的当前位置不小于其限制
-
put
相对的put方法(可选操作).将给定的浮点数写入此缓冲区的当前位置,然后递增该位置。
- 参数:
f- 要写入的浮点数- 返回:
- 这个缓冲区
- 抛出:
BufferOverflowException- 如果此缓冲区的当前位置不小于其限制ReadOnlyBufferException- 如果这个缓冲区是只读的
-
get
public abstract float get(int index) 绝对get方法。读取给定索引处的浮点数。- 参数:
index- 从中读取浮点数的索引- 返回:
- 给定索引处的浮点数
- 抛出:
IndexOutOfBoundsException- 如果index为负数或不小于缓冲区的限制
-
put
绝对put方法(可选操作).在给定索引处将给定浮点数写入此缓冲区。
- 参数:
index- 将写入浮点数的索引f- 要写入的浮点值- 返回:
- 这个缓冲区
- 抛出:
IndexOutOfBoundsException- 如果index为负数或不小于缓冲区的限制ReadOnlyBufferException- 如果这个缓冲区是只读的
-
get
相对体积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.lengthlength- 要写入给定数组的最大浮点数;必须为非负且不大于dst.length - offset- 返回:
- 这个缓冲区
- 抛出:
BufferUnderflowException- 如果此缓冲区中剩余的浮点数少于lengthIndexOutOfBoundsException- 如果offset和length参数的先决条件不成立
-
get
相对体积get方法。此方法将浮点数从该缓冲区传输到给定的目标数组。调用
src.get(a)形式的方法的行为与调用完全相同src.get(a, 0, a.length)
- 参数:
dst- 目标数组- 返回:
- 这个缓冲区
- 抛出:
BufferUnderflowException- 如果此缓冲区中剩余的浮点数少于length
-
get
绝对散装get方法。此方法将
length浮点数从该缓冲区传输到给定数组,从该缓冲区中的给定索引和数组中的给定偏移量开始。这个缓冲区的位置没有改变。调用
src.get(index, dst, offset, length)形式的此方法与以下循环具有完全相同的效果,除了它首先检查提供的参数的一致性并且它可能更有效:for (int i = offset, j = index; i < offset + length; i++, j++) dst[i] = src.get(j);- 参数:
index- 该缓冲区中的索引,将从中读取第一个浮点数;必须为非负且小于limit()dst- 目标数组offset- 要写入的第一个浮点数在数组中的偏移量;必须为非负且小于dst.lengthlength- 要写入给定数组的浮点数;必须为非负且不大于limit() - index和dst.length - offset中的较小者- 返回:
- 这个缓冲区
- 抛出:
IndexOutOfBoundsException- 如果index、offset和length参数的先决条件不成立- 自从:
- 13
-
get
绝对散装get方法。此方法将浮点数从该缓冲区传输到给定的目标数组。这个缓冲区的位置没有改变。调用
src.get(index, dst)形式的方法的行为与调用完全相同:src.get(index, dst, 0, dst.length)
- 参数:
index- 该缓冲区中的索引,将从中读取第一个浮点数;必须为非负且小于limit()dst- 目标数组- 返回:
- 这个缓冲区
- 抛出:
IndexOutOfBoundsException- 如果index为负,不小于limit()或limit() - index < dst.length- 自从:
- 13
-
put
相对体积put方法(可选操作).此方法将给定源缓冲区中剩余的浮点数传输到此缓冲区中。如果源缓冲区中剩余的浮点数多于此缓冲区中的浮点数,即如果
src.remaining()>remaining(),则不会传输任何浮点数并抛出BufferOverflowException。否则,此方法复制n=
src.remaining()从给定缓冲区浮动到此缓冲区,从每个缓冲区的当前位置开始。然后将两个缓冲区的位置递增n.换句话说,调用
dst.put(src)形式的方法与循环具有完全相同的效果while (src.hasRemaining()) dst.put(src.get());除了它首先检查此缓冲区中是否有足够的空间并且它可能更有效。如果此缓冲区和源缓冲区共享相同的后备数组或内存,则结果将好像源元素在写入此缓冲区之前首先复制到中间位置。- 参数:
src- 要从中读取浮点数的源缓冲区;不能是这个缓冲区- 返回:
- 这个缓冲区
- 抛出:
BufferOverflowException- 如果此缓冲区中的空间不足以容纳源缓冲区中的剩余浮点数IllegalArgumentException- 如果源缓冲区是这个缓冲区ReadOnlyBufferException- 如果这个缓冲区是只读的
-
put
绝对散装put方法(可选操作).此方法将
length浮点数从给定的源缓冲区传输到此缓冲区,从源缓冲区中的给定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- 该缓冲区中第一个浮点数将被写入的索引;必须为非负且小于limit()src- 要从中读取浮点数的缓冲区offset- 要读取的第一个浮点数在源缓冲区中的索引;必须为非负且小于src.limit()length- 要从给定缓冲区读取的浮点数;必须为非负且不大于limit() - index和src.limit() - offset中的较小者- 返回:
- 这个缓冲区
- 抛出:
IndexOutOfBoundsException- 如果index、offset和length参数的先决条件不成立ReadOnlyBufferException- 如果这个缓冲区是只读的- 自从:
- 16
-
put
相对体积put方法(可选操作).此方法将浮点数从给定的源数组传输到此缓冲区。如果要从数组中复制的浮点数多于保留在此缓冲区中的浮点数,即如果
length>remaining(),则不会传输任何浮点数并抛出BufferOverflowException。否则,此方法将
length浮点数从给定数组复制到此缓冲区,从数组中的给定偏移量开始,并在此缓冲区的当前位置。然后这个缓冲区的位置增加length。换句话说,调用
dst.put(src, off, len)形式的方法与循环具有完全相同的效果
除了它首先检查此缓冲区中是否有足够的空间并且它可能更有效。for (int i = off; i < off + len; i++) dst.put(src[i]);- 参数:
src- 要从中读取浮点数的数组offset- 要读取的第一个浮点数在数组中的偏移量;必须为非负且不大于src.lengthlength- 要从给定数组中读取的浮点数;必须为非负且不大于src.length - offset- 返回:
- 这个缓冲区
- 抛出:
BufferOverflowException- 如果缓冲区空间不足IndexOutOfBoundsException- 如果offset和length参数的先决条件不成立ReadOnlyBufferException- 如果这个缓冲区是只读的
-
put
相对体积put方法(可选操作).此方法将给定源浮点数组的全部内容传输到此缓冲区中。调用
dst.put(a)形式的方法的行为与调用完全相同dst.put(a, 0, a.length)
- 参数:
src- 源数组- 返回:
- 这个缓冲区
- 抛出:
BufferOverflowException- 如果缓冲区空间不足ReadOnlyBufferException- 如果这个缓冲区是只读的
-
put
绝对散装put方法(可选操作).此方法从给定数组传输
length浮点数,从数组中的给定偏移量和此缓冲区中的给定索引开始。这个缓冲区的位置没有改变。调用
dst.put(index, src, offset, length)形式的此方法与以下循环具有完全相同的效果,除了它首先检查提供的参数的一致性并且它可能更有效:for (int i = offset, j = index; i < offset + length; i++, j++) dst.put(j, src[i]);- 参数:
index- 该缓冲区中第一个浮点数将被写入的索引;必须为非负且小于limit()src- 要从中读取浮点数的数组offset- 要读取的第一个浮点数在数组中的偏移量;必须为非负且小于src.lengthlength- 要从给定数组中读取的浮点数;必须为非负且不大于limit() - index和src.length - offset中的较小者- 返回:
- 这个缓冲区
- 抛出:
IndexOutOfBoundsException- 如果index、offset和length参数的先决条件不成立ReadOnlyBufferException- 如果这个缓冲区是只读的- 自从:
- 13
-
put
绝对散装put方法(可选操作).此方法将浮点数从给定的源数组复制到此缓冲区中。这个缓冲区的位置没有改变。对
dst.put(index, src)形式的方法的调用与调用的行为完全相同:dst.put(index, src, 0, src.length);
- 参数:
index- 该缓冲区中第一个浮点数将被写入的索引;必须为非负且小于limit()src- 要从中读取浮点数的数组- 返回:
- 这个缓冲区
- 抛出:
IndexOutOfBoundsException- 如果index为负,不小于limit()或limit() - index < src.lengthReadOnlyBufferException- 如果这个缓冲区是只读的- 自从:
- 13
-
hasArray
public final boolean hasArray()告知此缓冲区是否由可访问的浮点数组支持。如果此方法返回
true,则可以安全地调用array和arrayOffset方法。 -
array
public final float[] array()返回支持此缓冲区的浮点数组(可选操作).对此缓冲区内容的修改将导致返回数组的内容被修改,反之亦然。
在调用此方法之前调用
hasArray方法,以确保此缓冲区具有可访问的后备数组。- 指定者:
array在类Buffer中- 返回:
- 支持此缓冲区的数组
- 抛出:
ReadOnlyBufferException- 如果此缓冲区由数组支持但为只读UnsupportedOperationException- 如果此缓冲区不受可访问数组的支持
-
arrayOffset
public final int arrayOffset()返回缓冲区第一个元素在此缓冲区的后备数组中的偏移量(可选操作).如果此缓冲区由数组支持,则缓冲区位置p对应数组索引p
arrayOffset()。在调用此方法之前调用
hasArray方法,以确保此缓冲区具有可访问的后备数组。- 指定者:
arrayOffset在类Buffer中- 返回:
- 缓冲区第一个元素在此缓冲区数组中的偏移量
- 抛出:
ReadOnlyBufferException- 如果此缓冲区由数组支持但为只读UnsupportedOperationException- 如果此缓冲区不受可访问数组的支持
-
position
设置此缓冲区的位置。如果标记已定义且大于新位置,则将其丢弃。 -
limit
设置此缓冲区的限制。如果位置大于新限制,则将其设置为新限制。如果标记已定义且大于新限制,则将其丢弃。 -
mark
在其位置设置此缓冲区的标记。 -
reset
将此缓冲区的位置重置为先前标记的位置。调用此方法既不会更改也不会丢弃标记的值。
-
clear
清除此缓冲区。位置设置为零,限制设置为容量,标记被丢弃。在使用一系列通道读取或之前调用此方法put填充此缓冲区的操作。例如:
buf.clear(); // Prepare buffer for reading in.read(buf); // Read data
这种方法实际上并没有擦除缓冲区中的数据,但它的命名就好像它确实擦除一样,因为它最常用于可能是这种情况的情况。
-
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方法结合使用。 -
rewind
倒带此缓冲区。位置设置为零,标记被丢弃。在一系列通道写入或之前调用此方法get操作,假设已经适当地设置了限制。例如:
out.write(buf); // Write remaining data buf.rewind(); // Rewind buffer buf.get(array); // Copy data into array
-
compact
压缩此缓冲区(可选操作).缓冲区当前位置与其限制之间的浮点数(如果有)被复制到缓冲区的开头。也就是index处的floatp=
position()被复制到索引零,索引处的浮点数p1 被复制到索引 1,依此类推,直到索引limit()- 1 处的浮点数被复制到索引nlimit()-1-p.缓冲区的位置然后设置为n+1个其限制设置为其容量。标记(如果已定义)将被丢弃。缓冲区的位置设置为复制的浮点数,而不是零,因此调用此方法后可以立即调用另一个相关方法put方法。
- 返回:
- 这个缓冲区
- 抛出:
ReadOnlyBufferException- 如果这个缓冲区是只读的
-
isDirect
public abstract boolean isDirect()判断这个浮点缓冲区是否是直接的。 -
toString
返回总结此缓冲区状态的字符串。 -
hashCode
public int hashCode()返回此缓冲区的当前哈希码。浮点缓冲区的哈希码仅取决于其剩余元素;也就是说,基于从
position()到并包括limit()-1处的元素的元素。因为缓冲区哈希码依赖于内容,所以不建议使用缓冲区作为hash map或类似数据结构中的键,除非知道它们的内容不会改变。
-
equals
告知此缓冲区是否等于另一个对象。当且仅当,两个浮点缓冲区相等
它们具有相同的元素类型,
它们具有相同数量的剩余元素,并且
独立于它们的起始位置考虑的剩余元素的两个序列逐点相等。如果
(a == b) || (Float.isNaN(a) && Float.isNaN(b)),此方法将两个浮点元素a和b视为相等。值-0.0和+0.0被认为是相等的,不像Float.equals(Object)。
浮动缓冲区不等于任何其他类型的对象。
-
compareTo
将此缓冲区与另一个缓冲区进行比较。通过按字典顺序比较剩余元素的序列来比较两个浮点缓冲区,而不考虑每个序列在其相应缓冲区中的起始位置。成对的
float元素就像调用Float.compare(float,float)一样进行比较,除了-0.0和0.0被认为是相等的。Float.NaN被此方法视为等于自身并大于所有其他float值(包括Float.POSITIVE_INFINITY)。浮动缓冲区无法与任何其他类型的对象相提并论。
- 指定者:
compareTo在接口Comparable<FloatBuffer>中- 参数:
that- 要比较的对象。- 返回:
- 负整数、零或正整数,因为此缓冲区小于、等于或大于给定缓冲区
-
mismatch
查找并返回此缓冲区与给定缓冲区之间第一个不匹配的相对索引。该索引与每个缓冲区的position相关,并且将在 0(含)到每个缓冲区中的remaining元素(不包括)中较小的范围内。如果两个缓冲区共享一个公共前缀,则返回的索引是公共前缀的长度,因此两个缓冲区在各自缓冲区内的该索引处存在不匹配。如果一个缓冲区是另一个缓冲区的适当前缀,则返回的索引是每个缓冲区中剩余元素中较小的一个,因此该索引仅对剩余元素数量较多的缓冲区有效。否则,不存在不匹配。
- 参数:
that- 要测试与此缓冲区不匹配的字节缓冲区- 返回:
- 此缓冲区与给定缓冲区之间第一个不匹配的相对索引,否则如果不匹配则为 -1。
- 自从:
- 11
-
order
检索此缓冲区的字节顺序。通过分配或包装现有
float数组创建的浮点缓冲区的字节顺序是底层硬件的native order。作为字节缓冲区的 看法 创建的浮点缓冲区的字节顺序是创建视图时字节缓冲区的字节顺序。- 返回:
- 此缓冲区的字节顺序
-