Java中Buffer缓冲区的ByteBuffer类详解

 更新时间:2023年10月24日 09:55:44   作者:liyong0829  
这篇文章主要介绍了Java中Buffer缓冲区的ByteBuffer类详解,ByteBuffer类是Java NIO库中的一个重要类,用于处理字节数据,它提供了一种灵活的方式来读取、写入和操作字节数据,ByteBuffer类是一个抽象类,可以通过静态方法创建不同类型的ByteBuffer对象,需要的朋友可以参考下

ByteBuffer类

ByteBuffer类内部封装了一个byte[]数组,并可以通过一些方法对这个数组进行操作。

创建ByteBuffer对象的三种方式

//方式一:在堆中创建缓冲区:
 public static ByteBuffer allocate(intcapacity)
// 方式二: 在系统内存创建缓冲区:
 public static ByteBuffer allocatDirect(int capacity) 
// 方式三:通过数组创建缓冲区:
 public static ByteBuffer wrap(byte[] arr)

添加数据-put

public ByteBuffer put(byte b);
//向当前可用位置添加数据。
 public ByteBuffer put(byte[] byteArray);
// 向当前可用位置添加一个byte[]数组
 public ByteBuffer put(byte[] byteArray,int offset,int len);
// 添加一个byte[]数组的一部分

容量-capacity

Buffer的容量(capacity)是指:Buffer所能够包含的元素的最大数量。定义了Buffer后,容量是不可变的

 public final int capacity();//获取缓冲数组的容量

限制-limit

限制limit是指:第一个不应该读取或写入元素的index索引。缓冲区的限制(limit)不能为负,并且不能大于容量。 有两个相关方法:

 public int limit()://获取此缓冲区的限制。
 public Buffer limit(int newLimit)://设置此缓冲区的限制

位置-position

位置position是指:当前可写入的索引。位置不能小于0,并且不能大于"限制"。

结论: 操作缓冲数组,其实就是操作position到limit之间位置上的元素 有两个相关方法:

 public int position()://获取当前可写入位置索引。
 public Buffer position(int p)://更改当前可写入位置索引。

标记-mark

标记mark是指:当调用缓冲区的reset()方法时,会将缓冲区的position位置重置为该标记的索引。

相关方法:

 public Buffer mark();//设置此缓冲区的标记为当前的position位置。
 public Buffer reset();//将此缓冲区的位置重置为以前标记的位置。

其它方法

public Buffer clear();//还原缓冲区的状态。
  • 将position设置为:0
  • 将限制limit设置为容量capacity;
  • 丢弃标记mark。
public Buffer flip();//缩小limit的范围。
  • 将limit设置为当前position位置;
  • 将当前position位置设置为0;
  • 丢弃标记

到此这篇关于Java中Buffer缓冲区的ByteBuffer类详解的文章就介绍到这了,更多相关Java的ByteBuffer类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringMVC中Json数据格式转换

    SpringMVC中Json数据格式转换

    本文主要介绍了SpringMVC中Json数据格式转换的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • java多线程文件下载器的实现

    java多线程文件下载器的实现

    本文主要介绍了java多线程文件下载器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • minio的下载和springboot整合minio使用方法

    minio的下载和springboot整合minio使用方法

    本文介绍了如何通过Docker拉取MinIO镜像,并创建MinIO容器的过程,首先,需要在本地创建/data和/conf两个目录用于挂载MinIO的数据和配置文件,接下来,通过docker run命令启动容器,设置MinIO的访问端口、用户名、密码等信息,感兴趣的朋友一起看看吧
    2024-09-09
  • springboot实现对注解的切面案例

    springboot实现对注解的切面案例

    这篇文章主要介绍了springboot实现对注解的切面过程,首先定义一个注解、再编写对注解的切面只是记录的执行时间和打印方法,可以实现其他逻辑,需要的朋友可以参考一下
    2022-01-01
  • 使用@RequestBody 接收复杂实体类集合

    使用@RequestBody 接收复杂实体类集合

    这篇文章主要介绍了使用@RequestBody 接收复杂实体类集合方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Java中检查值是否存在于数组中的4种详细方法

    Java中检查值是否存在于数组中的4种详细方法

    这篇文章主要给大家介绍了关于Java中检查值是否存在于数组中的4种详细方法,相信大家在操作Java的时候经常会要检查一个数组(无序)是否包含一个特定的值,需要的朋友可以参考下
    2023-08-08
  • 如何解决Springboot Dao注入失败的问题

    如何解决Springboot Dao注入失败的问题

    这篇文章主要介绍了如何解决Spring boot Dao注入失败的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • spring boot实战教程之shiro session过期时间详解

    spring boot实战教程之shiro session过期时间详解

    这篇文章主要给大家介绍了关于spring boot实战教程之shiro session过期时间的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-10-10
  • SpringBoot实战之处理异常案例详解

    SpringBoot实战之处理异常案例详解

    这篇文章主要介绍了SpringBoot实战之处理异常案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • 将Java的List结构通过GSON库转换为JSON的方法示例

    将Java的List结构通过GSON库转换为JSON的方法示例

    GONS是Google在GitHub上开源的Java类库,提供各种Java对象和JSON格式对象之间的转换功能,将Java的List结构通过GSON库转换为JSON的方法示例
    2016-06-06

最新评论