3、Buffer类

简介

Buffer类线程不安全。抽象类,是Java.nio包下的基类
在NIO中有8种缓冲区分类,子类主要有8个:
ByteBuffer,CharBuffer,IntBuffer,DoubleBuffer,FloatBuffer,LongBuffer,ShortBuffer,MappedByteBuffer
前7个包含了Java的8大基本类型。使用最多的是ByteBuffer

Buffer类的属性

1、capacity(容量)
Buffer区的可存放的最大对象数。int是4个字节,如果容量是10,那么Buffer区的最大字节是 40.
2、position(位置):指向下一个的位置
初始值为0,最大可写值为limit-1
3、limit(最大值)
写:limit=capactiy
读:limit是存入缓冲区的最大数量。即position,因为position是指向下一个的位置,所以不用+1
4、mark(标记)
相当于一个暂存属性,暂时保存position属性,方便重复使用position属性

Buffer类的方法

1、allocate() 创建缓冲区

IntBuffer intBuffer=IntBuffer.allocate(20);

Buffer属性:
position=0;
limit=20;
capacity=20;

2、put()写入到缓冲区

    intBuffer.put(1);
    intBuffer.put(2);
    intBuffer.put(3);
    intBuffer.put(4);
    intBuffer.put(5);
Buffer属性:
position=5;
limit=20;
capactity=20;

3、flip()翻转
缓冲区由写模式切换为读模式
1、position初始值为0
2、limit初始值为position
3、清除之前的mark标记

intBuffer.flip();

Buffer属性:
position=0;
limit=5;
capactity=20;

4、get()读
读一次位置向后移一位。如果超过limit,会报BufferUnderflowError异常

     intBuffer.get();
     intBuffer.get();
Buffer属性:
position=2;
limit=5;
capactity=20;

5、rewind()倒带
这个方法会像磁带一样,重新播放。
1、position为初始化0
2、limit保持不变
3、清除mark标记

intBuffer.rewind();
Buffer属性:
position=0;
limit=5;
capactity=20;

6、mark()和reset()
mark和reset是配合使用的。
当读到第二个位置的时候,mar(),然后接着往下读1个,位置在第三个上面,reset()后,position会恢复到第二个上。

7、clear() 清空缓冲区

清空缓冲区,会将读模式切换为写模式。因为清空缓冲区后,相当于切换到缓冲区的默认模式,默认模式就是写模式

intBuffer.clear();
Buffer属性:
position=0;
limit=5;
capactity=20;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值