Java NIO Buffer的flip、reset、mark、rewind、clear操作区别联系

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

0 <= 标记 <= 位置 <= 限制 <= 容量

 

 

  位置 限制 容量 标记
  position limit capcity mark
mark / / / position
reset position / / /
clear 0 capcity / 丢弃
flip 0 position / /
rewind 0 / / /

 

缓冲区的容量 是它所包含的元素的数量。缓冲区的容量不能为负并且不能更改。

缓冲区的限制 是第一个不应该读取或写入的元素的索引。缓冲区的限制不能为负,并且不能大于其容量。

缓冲区的位置 是下一个要读取或写入的元素的索引。缓冲区的位置不能为负,并且不能大于其限制。

 

 

(这部分是转载)

http://book.51cto.com/art/200902/109721.htm

表 5.4:在Buffer上创建不同透视的方法

方法

Capacity

新缓冲区的初始值

Position

Limit

Mark

ByteBuffer duplicate()

capacity

position

limit

mark

ByteBuffer slice()

remaining()

0

remaining()

未定义

ByteBuffer asReadOnlyBuffer()

capacity

position

limit

mark

CharBuffer asCharBuffer()

remaining()/2

0

remaining()/2

未定义

DoubleBuffer asDoubleBuffer()

remaining()/8

0

remaining()/8

未定义

FloatBuffer asFloatBuffer()

remaining()/4

0

remaining()/4

未定义

IntBuffer asIntBuffer()

remaining()/4

0

remaining()/4

未定义

LongBuffer asLongBuffer()

remaining()/8

0

remaining()/8

未定义

ShortBuffer asShortBuffer()

remaining()/2

0

remaining()/2

 

 

 

你可能感兴趣的:(java)