Position
您可以回想一下,缓冲区实际上就是美化了的数组。在从通道读取时,您将所读取的数据放到底层的数组中。 position
变量跟踪已经写了多少数据。更准确地说,它指定了下一个字节将放到数组的哪一个元素中。因此,如果您从通道中读
三个字节到缓冲区中,那么缓冲区的 position 将会设置为3,指向数组中第四个元素。
同样,在写入通道时,您是从缓冲区中获取数据。 position 值跟踪从缓冲区中获取了多少数据。更准确地说,它指定
下一个字节来自数组的哪一个元素。因此如果从缓冲区写了5 个字节到通道中,那么缓冲区的 position 将被设置为5,
指向数组的第六个元素。
Limit
limit 变量表明还有多少数据需要取出(在从缓冲区写入通道时),或者还有多少空间可以放入数据(从通道读入缓冲区)
position总是小于或者等于limit
Capacity
缓冲区的capacity表明可以存储在缓冲区中的最大数据容量。实际上,他指定了底层数组的大小---或者至少指定了准许我们使用底层数组的容量
limit决不能大于capacity
http://wenku.baidu.com/view/55c75a3383c4bb4cf7ecd16f.html
这篇pdf讲的很详细。