ByteBuffer中属性及其操作

继承自Buffer,用于存储基本类型数据的容器

  • capacity(容量),缓冲区容量,不能更改

  • postion(位置),下一个要读取或写入的元素索引

  • limit(限制),第一个不能被读取或写入的元素索引

  • mark(标记),标记索引,调用reset方法重置缓冲区位置到mark索引

    标记、位置、限制和容量值遵守以下不变式:
    0 <= 标记 <= 位置 <= 限制 <= 容量


常用操作方法


  • capacity()
    返回缓冲区的容量
  • clear()
    清空缓冲区,将position设为0,limit设为capacity,丢弃mark的值,一般调用此方法后用来覆盖写入缓冲区
  • flip()
    将limit设为position,position设为0,丢弃mark的值。一般用在read()方法之后用来从缓冲区读取(get)已经写入的数据
  • rewind()
    position置0,标记被丢弃,在一系列通道write()和get()操作之前进行
  • limit()
    返回limit的值
  • limit(int newLimit)
    设置限制,如果位置大于限制,position=limit,如果已有标记大于新限制,那么标记被丢弃
  • mark()
    将当前position设置为标记
  • position
    返回当前position
  • position(int newPosition)
    设置position,如果已有mark大于position,则丢弃mark
  • remaining()
    返回limit-positi
  • hasRemaining()
    若有介于limit和position之间的元素,则返回true

总结
设置属性时,要遵循不变式,不符合不变式的设置会被丢弃或重置为合理值,学习时对照源码理解会更加深刻

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值