ByteBuffer中属性及其操作

来源:互联网 发布:dota狐狸妈黑历史 知乎 编辑:程序博客网 时间:2024/06/06 00:16

继承自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
原创粉丝点击