Buffer 对象可以被称为固定数量数据的容器。缓冲区充当存储盒或临时暂存区,可以在其中存储数据,然后根据使用情况进行检索。Java Buffer 类是构建 java.nio 的基础。浮点缓冲区是通过分配(为缓冲区的内容分配空间)、将现有浮点数组包装到缓冲区中或通过创建现有字节缓冲区的视图来创建的。
此类定义了对浮点缓冲区的四类操作:
- 读取和写入单个浮点数的绝对和相对 get 和 put 方法;
- 将连续浮点序列从此缓冲区传输到数组中的相对批量获取方法;
- 将连续的浮点序列从浮点数组或其他一些浮点缓冲区传输到此缓冲区的相对批量放置方法;
- 压缩、复制和切片浮动缓冲区的方法。
下面是 java.nio.FloatBuffer 类的一些方法的实现:
1.reset(): 这个方法用来把这个buffer的位置重置到之前标记的位置。
语法:public final FloatBuffer reset()
参数:无
返回:返回缓冲区。
import java.nio.*; import java.util.*; public class Example { public static void main(String[] args){ try { float[] arr = { 10.5f, 20.5f, 30.5f, 40.5f }; FloatBuffer x = FloatBuffer.wrap(arr); x.position(2); x.mark(); x.position(4); System.out.println("Pos before reset: " + x.position()); x.reset(); System.out.println("Pos after reset: " + x.position()); } catch (InvalidMarkException e) { System.out.println("New pos is less than " + "the pos " + " marked before "); System.out.println("Exception throws: " + e); } } }
输出
Pos before reset: 4 Pos after reset: 2
2. rewind(): 该方法用于回绕这个缓冲区。
语法: public final FloatBuffer rewind()
参数: 无
返回: 返回缓冲区
import java.nio.*; import java.util.*; public class Example2 { public static void main(String[] args){ FloatBuffer x = FloatBuffer.allocate(4); x.put(10.5f); x.put(20.5f); System.out.println("Buffer before operation: " + Arrays.toString(x.array()) + "\nPosition: " + x.position() + "\nLimit: " + x.limit()); x.rewind(); System.out.println("\nBuffer after operation: " + Arrays.toString(x.array()) + "\nPosition: " + x.position() + "\nLimit: " + x.limit()); } }
输出
Buffer before operation: [10.5, 20.5, 0.0, 0.0] Position: 2 Limit: 4 Buffer after operation: [10.5, 20.5, 0.0, 0.0] Position: 0 Limit: 4