Java 中的 java.nio.FloatBuffer 类

885 阅读4分钟

「这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战

🌊 作者主页:海拥
🌊 作者简介:🥇HDZ核心组成员、🏆全栈领域优质创作者、🥈蝉联C站周榜前十
🌊 粉丝福利:进粉丝群每周送四本书(每位都有),每月抽送各种小礼品(掘金搪瓷杯、抱枕、鼠标垫、马克杯等)

Buffer 对象可以被称为固定数量数据的容器。缓冲区充当存储盒或临时暂存区,可以在其中存储数据,然后根据使用情况进行检索。Java Buffer 类是构建 java.nio 的基础。浮点缓冲区是通过分配(为缓冲区的内容分配空间)、将现有浮点数组包装到缓冲区中或通过创建现有字节缓冲区的视图来创建的。

此类定义了对浮点缓冲区的四类操作:

  • 读取和写入单个浮点数的绝对和相对 get 和 put 方法;
  • 将连续浮点序列从此缓冲区传输到数组中的相对批量获取方法;
  • 将连续的浮点序列从浮点数组或其他一些浮点缓冲区传输到此缓冲区的相对批量放置方法;
  • 压缩、复制和切片浮动缓冲区的方法。
方法描述
allocate(int capacity)此方法分配一个新的浮点缓冲区。
array()此方法返回支持此缓冲区的浮点数组  
arrayOffset()此方法返回缓冲区第一个元素在此缓冲区的后备数组中的偏移量 
asReadOnlyBuffer()此方法创建一个新的只读浮点缓冲区,该缓冲区共享此缓冲区的内容。
compact()此方法压缩此缓冲区
compareTo(FloatBuffer that)此方法将此缓冲区与另一个缓冲区进行比较。
duplicate()此方法创建一个共享此缓冲区内容的新浮点缓冲区。
equals(Object ob)这个方法告诉这个缓冲区是否等于另一个对象。
get()这个方法相对gets方法。
get(float[] dst)此方法相对批量获取方法。
get(float[] dst, int offset, int length)此方法相对批量获取方法。
get(int index)这个方法绝对get方法。
hasArray()此方法告诉此缓冲区是否由可访问的浮点数组支持。
hashCode()此方法返回此缓冲区的当前哈希码。
isDirect()这个方法告诉这个浮动缓冲区是否是直接的。
order()此方法检索此缓冲区的字节顺序。
put(float f)此方法相对放置方法
put(float[] src)此方法相对批量放置方法 
put(float[] src, int offset, int length)此方法相对批量放置方法 
put(FloatBuffer src)相对批量放置方法
put(int index, float f)绝对放置方法 
slice()创建一个新的浮点缓冲区,其内容是该缓冲区内容的共享子序列。
toString()此方法返回一个总结此缓冲区状态的字符串。
wrap(float[] array)此方法将一个浮点数组包装到一个缓冲区中。
wrap(float[] array, int offset, int length)此方法将一个浮点数组包装到一个缓冲区中。

下面是 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

写在最后的

作者立志打造一个拥有100个小游戏的摸鱼网站,更新进度:40/100

我已经写了很长一段时间的技术博客,并且主要通过掘金发表,这是我的一篇关于Java 中的 java.nio.FloatBuffer 类。我喜欢通过文章分享技术与快乐。你可以访问我的博客: juejin.cn/user/204034… 以了解更多信息。希望你们会喜欢!😊

💌 欢迎大家在评论区提出意见和建议!💌