Most visited

Recently visited

Added in API level 1

FloatBuffer

public abstract class FloatBuffer
extends Buffer implements Comparable<FloatBuffer>

java.lang.Object
   ↳ java.nio.Buffer
     ↳ java.nio.FloatBuffer


一个浮点缓冲区。

这个类在float缓冲区上定义了四类操作:

浮点缓冲区可以通过 allocation (为缓冲区的内容分配空间), wrapping现有的浮点数组创建到缓冲区中,或通过创建现有字节缓冲区的 view来创建。

像字节缓冲区一样,浮点缓冲区是direct or non-direct 通过此类的wrap方法创建的浮点缓冲区将是非直接的。 当且仅当字节缓冲区本身是直接的时,作为字节缓冲区视图创建的浮动缓冲区才是直接的。 通过调用isDirect方法可以确定浮动缓冲区是否是直接的。

指定此类中不具有返回值的方法以返回调用它们的缓冲区。 这允许方法调用被链接。

Summary

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

Public methods

allocate

Added in API level 1
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

array

Added in API level 1
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

arrayOffset

Added in API level 1
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

asReadOnlyBuffer

Added in API level 1
FloatBuffer asReadOnlyBuffer ()

创建一个共享此缓冲区内容的新的只读浮动缓冲区。

新缓冲区的内容将是该缓冲区的内容。 此缓冲区内容的更改将在新缓冲区中可见; 但是新的缓冲区本身将是只读的,并且不允许修改共享内容。 两个缓冲区的位置,限制和标记值将是独立的。

新缓冲区的容量,限制,位置和标记值将与该缓冲区的相同。

如果此缓冲区本身是只读的,则此方法的行为方式与 duplicate方法完全相同。

Returns
FloatBuffer The new, read-only float buffer

compact

Added in API level 1
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

compareTo

Added in API level 1
int compareTo (FloatBuffer that)

将此缓冲区与另一个进行比较。

通过按照字典顺序比较剩余元素的序列来比较两个浮点缓冲区,而不考虑每个序列在其相应缓冲区内的起始位置。 float元素进行比较,就好像通过调用compare(float, float) ,除了-0.00.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

duplicate

Added in API level 1
FloatBuffer duplicate ()

创建一个共享此缓冲区内容的新浮点缓冲区。

新缓冲区的内容将是该缓冲区的内容。 这个缓冲区内容的改变将在新缓冲区中可见,反之亦然; 两个缓冲区的位置,限制和标记值将是独立的。

新缓冲区的容量,限制,位置和标记值将与该缓冲区的相同。 当且仅当此缓冲区是直接的时,新缓冲区才是直接的,并且只有在此缓冲区是只读的情况下,它才会是只读的。

Returns
FloatBuffer The new float buffer

equals

Added in API level 1
boolean equals (Object ob)

告诉这个缓冲区是否等于另一个对象。

两个浮动缓冲区相等,当且仅当,

  1. 它们具有相同的元素类型,

  2. 他们有相同数量的剩余元素,并且

  3. 独立于其起始位置考虑的剩余元素的两个序列是逐点相等的。 该方法考虑两个浮动元件ab是如果等于(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

get

Added in API level 1
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

get

Added in API level 1
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

get

Added in API level 1
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

get

Added in API level 1
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

hasArray

Added in API level 1
boolean hasArray ()

告诉该缓冲区是否由可访问的浮点数组支持。

如果此方法返回 true,则可以安全地调用 arrayarrayOffset方法。

Returns
boolean true if, and only if, this buffer is backed by an array and is not read-only

hashCode

Added in API level 1
int hashCode ()

返回此缓冲区的当前哈希码。

浮点缓冲区的哈希码仅依赖于其余的元素; 也就是说,从position()limit() - 1的元素并包括该元素。

由于缓冲区散列码与内容相关,因此除非知道其内容不会改变,否则在散列映射或类似数据结构中使用缓冲区作为键是不可取的。

Returns
int The current hash code of this buffer

isDirect

Added in API level 1
boolean isDirect ()

告诉这个浮点缓冲区是否是直接的。

Returns
boolean true if, and only if, this buffer is direct

order

Added in API level 1
ByteOrder order ()

检索此缓冲区的字节顺序。

通过分配或包装现有的float阵列创建的浮点缓冲区的字节顺序是底层硬件的 native order 创建为字节缓冲区view的浮点缓冲区的字节顺序是创建视图时字节缓冲区的字节顺序。

Returns
ByteOrder This buffer's byte order

put

Added in API level 1
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

put

Added in API level 1
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

put

Added in API level 1
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

put

Added in API level 1
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

put

Added in API level 1
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

slice

Added in API level 1
FloatBuffer slice ()

创建一个新的浮点缓冲区,其内容是此缓冲区内容的共享子序列。

新缓冲区的内容将从此缓冲区的当前位置开始。 这个缓冲区内容的改变将在新缓冲区中可见,反之亦然; 两个缓冲区的位置,限制和标记值将是独立的。

新缓冲区的位置将为零,其容量和限制将为剩余在此缓冲区中的浮点数,并且其标记将不确定。 当且仅当此缓冲区是直接的时,新缓冲区才是直接的,并且只有在此缓冲区是只读的情况下,它才会是只读的。

Returns
FloatBuffer The new float buffer

toString

Added in API level 1
String toString ()

返回汇总此缓冲区状态的字符串。

Returns
String A summary string

wrap

Added in API level 1
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

wrap

Added in API level 1
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

Hooray!