JAVA NIO BUFFER

本文详细解释了Java NIO中Buffer的clear与compact方法的区别,并介绍了equals与compareTo方法如何比较Buffer对象,同时展示了rewind方法的作用及ByteBuffer.wrap的功能。

1.

 clear 和 compact 的区别 clear 会将未读取的数据遗忘,但是compact不会遗忘,而是打包整合在一起

如果Buffer中仍有未读的数据,且后续还需要这些数据,但是此时想要先先写些数据,那么使用compact()方法

 

假设buffer的容量是10 ,写入四个。读取2个,clear会导致position成为0,但是compact会将position设置为2.打印buffer的关键参数为:

position:2#remaining:8#limit:10#capacity:10########

clear的结果是:position:0#remaining:10#limit:10#capacity:10########

 

2.equals和compareTo

当满足下列条件时,表示两个Buffer相等:

  1. 有相同的类型(byte、char、int等)。
  2. Buffer中剩余的byte、char等的个数相等。
  3. Buffer中所有剩余的byte、char等都相同。

如你所见,equals只是比较Buffer的一部分,不是每一个在它里面的元素都比较。实际上,它只比较Buffer中的剩余元素。

compareTo:

compareTo()方法比较两个Buffer的剩余元素(byte、char等), 如果满足下列条件,则认为一个Buffer“小于”另一个Buffer:

  1. 第一个不相等的元素小于另一个Buffer中对应的元素 。
  2. 所有元素都相等,但第一个Buffer比另一个先耗尽(第一个Buffer的元素个数比另一个少)。

rewind:

Buffer.rewind()将position设回0,所以你可以重读Buffer中的所有数据。limit保持不变,仍然表示能从Buffer中读取多少个元素(byte、char等)。

 

ByteBuffer.wrap

类似于一个工具,快速的将一个数组转换为ByteBuffer

转载于:https://my.oschina.net/payzheng/blog/687185

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值