【初学者】NIO缓存区简单例子测试

缓冲区
缓冲区就是存储数据的区域,在java中就是数组,为了操作不同数据类型,java提供了不同类型的缓冲区,除布尔外其他基本类型都有(这次因为布尔是1bit,IO中都是按字节传输的没必要在提供一个缓存区)
主要方法:

  • put()将数据写入缓存区
  • get()从缓冲区读数据
  • flip()可以实现读写模式的切换
  • static allocate(int num)获取指定容量大小的缓存区
    主要属性
  • capacity 缓存区最大容量
  • limit 缓冲区可以操作数据的大小
  • position正在操作的下标位置
  • mark:标记位置,调用reset方法可以指定position到mark的位置
    简单例子测试代码:
public static void main(String[] args) {
    //分配内存为11的整型缓存区
    IntBuffer buffer=IntBuffer.allocate(11);
    //往buffer里写2个整型数据
    for(int i=0;i<2;i++){
        int n=new SecureRandom().nextInt(101);  //SecureRandom西Q而润等
        buffer.put(n);
    }
    //将Buffer从写模式切换到读模式
    /*  缓存区有三个主要属性:
        1、缓冲区最大容量capacity
        2、最大可读写量limit,
        3、前指针位置position,
        4、标记位置mark(当于标记个位置,到时候调用reset()方法将当前位置指定为mark)
        源码上看,flip相当于重置,设置limit=当前位置(经过上面循环后当前位置为2))
        设置position=0,mark=-1(相)
     */
    buffer.flip();
    //输出position,limit,mark三个属性的指
    System.out.println("position:"+buffer.position()+",limit="+buffer.limit()+",capacity="+buffer.capacity());
    //遍历buffer缓存区 hasRemaining判断position是否小于limit,即是否读到最大可读量
    while(buffer.hasRemaining()){
        System.out.println("缓存区取出第"+buffer.position()+"个数据:"+buffer.get());
    }
    //再次输出三个属性
    System.out.println("position:"+buffer.position()+",limit="+buffer.limit()+",capacity="+buffer.capacity());
}

测试结果:
测试结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值