java8中NIO缓冲区(Buffer)的数据存储详解

 更新时间:2019年04月17日 08:45:21   投稿:laozhang  
在本篇文章中小编给大家分享了关于java8中NIO缓冲区(Buffer)的数据存储的相关知识点,需要的朋友们参考下。

java8新特性NIO缓冲区(Buffer)的数据存储。

ByteBuffer,CharBuffer,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer,

DoubleBuffer.

1、缓冲区在java nio中负责数据的存储。缓冲区就是数组。用于存储不同数据类型的数据。根据数据类型不同(boolean除外),提供了相应类型的缓冲区。

ByteBuffer,CharBuffer,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer,

DoubleBuffer.

上述缓冲区的管理方式几乎一致,通过allocate()获取缓冲区。

//分配一个指定大小的缓冲区ByteBuffer byteBuffer = ByteBuffer.allocate(1024);

2、缓冲区中的四个核心属性:

capacity:容量,表示缓冲区中最大存储数据的容量。一旦声明不能改变。

3、limit:界限,表示缓冲区中可以操作数据的大小。(limit后所得数据不能进行读写)。

4、position:位置,表示缓冲区中正在操作数据的位置。

position<=limit<=capacity

5、ByteBuffer的基本使用。

缓冲区存取数据的两个核心方法:

put():存入数据到缓冲区

 

//分配一个指定大小的缓冲区

ByteBuffer byteBuffer = ByteBuffer.allocate(1024);

    

System.out.println(byteBuffer.position());

System.out.println(byteBuffer.limit());;

System.out.println(byteBuffer.capacity());

    

//利用put方法存入数据到缓冲区中

String str = "abcde";

byteBuffer.put(str.getBytes());

6、ByteBuffer的基本使用。

缓冲区存取数据的两个核心方法:

get():获取缓冲区的数据

 

//4、利用get()读取缓冲区的数据

    byte[] dst = new byte[byteBuffer.limit()];

    byteBuffer.get(dst);

    System.out.println(new String(dst,0,dst.length));

7、调用flip()读数据模式之后

//3、切换成读取数据模式byteBuffer.flip();

8、调用flip()操作之后:

9、rewind()方法:可重复读:

byteBuffer.rewind();

System.out.println("----------rewind()-------------");

System.out.println(byteBuffer.position());

System.out.println(byteBuffer.limit());;

System.out.println(byteBuffer.capacity());

相关文章

  • 解决IDEA中快捷键Alt+Enter不能使用的问题

    解决IDEA中快捷键Alt+Enter不能使用的问题

    这篇文章主要介绍了解决IDEA中快捷键Alt+Enter不能使用的问题,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • SpringBoot+MyBatisPlus对Map中Date格式转换处理的方法详解

    SpringBoot+MyBatisPlus对Map中Date格式转换处理的方法详解

    在 SpringBoot 项目中, 如何统一 JSON 格式化中的日期格式。本文将为大家介绍一种方法:利用MyBatisPlus实现对Map中Date格式转换处理,需要的可以参考一下
    2022-10-10
  • Spring Web项目spring配置文件随服务器启动时自动加载

    Spring Web项目spring配置文件随服务器启动时自动加载

    这篇文章主要介绍了Spring Web项目spring配置文件随服务器启动时自动加载,加载spring的配置文件,并且只加载一次,从而提高程序效率。具体内容详情大家通过本文一起学习吧
    2018-01-01
  • 基于Spring Boot应用ApplicationEvent案例场景

    基于Spring Boot应用ApplicationEvent案例场景

    这篇文章主要介绍了基于Spring Boot应用ApplicationEvent,利用Spring的机制发布ApplicationEvent和监听ApplicationEvent,需要的朋友可以参考下
    2023-03-03
  • 关于如何正确地定义Java内部类方法详解

    关于如何正确地定义Java内部类方法详解

    在Java中,我们通常是把不同的类创建在不同的包里面,对于同一个包里的类来说,它们都是同一层次的,但其实还有另一种情况,有些类可以被定义在另一个类的内部,本文将详细带你了解如何正确地定义Java内部类,需要的朋友可以参考下
    2023-05-05
  • 基于StringBuilder类中的重要方法(介绍)

    基于StringBuilder类中的重要方法(介绍)

    下面小编就为大家带来一篇基于StringBuilder类中的重要方法(介绍)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • SpringBoot通过tractId操作日志链路跟踪

    SpringBoot通过tractId操作日志链路跟踪

    这篇文章给大家介绍SpringBoot通过tractId操作日志链路跟踪,通过tractId,即可完成对从一个请求进入系统到请求结束的日志追踪,本文给大家介绍的非常详细,需要的朋友参考下吧
    2023-10-10
  • 详解maven中profiles使用实现

    详解maven中profiles使用实现

    本文主要介绍了maven中profiles使用实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • struts1实现简单的登录功能实例(附源码)

    struts1实现简单的登录功能实例(附源码)

    本篇文章主要介绍了struts1实现简单的登录功能实例(附源码),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • spring事务异常回滚实例解析

    spring事务异常回滚实例解析

    这篇文章主要介绍了spring事务异常回滚实例解析,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01

最新评论