java.nio.Buffer的方法摘要如下:
插句题外话,通过观察上图可以发现两点,1、很多方法采用了“级联调用”的类设计方法,2、没有实现诸如get、put的方法,因为这些方法在基类中无法确定,因此在子类中实现。
我们讲解一下:flip()方法——反转
filip()方法的实际执行逻辑是:buffer.limit(buffer.position()).position(0);即position回0,且limit标记为反转前的最后一个有效位置,而这个位置可能是get或put方法设定的。
我们再说下:rewind()方法——回退
rewind()方法个flip()类似,唯一的差别是不影响上界属性,即limit
我们接着再说一下:hasRemaining()方法
hasRemaining()方法告诉我们是否达到了缓冲区的上界,即limit
和hasRemaining()方法有关联的方法是remaining(),这个方法将返回当前位置即position到上界位置即limit的元素个数。
reset()方法在上一章节“java NIO(一) 缓冲区”已经介绍,请参考。
由此可以看出java.nio.Buffer的方法大体上都很直观,按照上一章节我们的说法,只要弄清楚:mark、position、limit、capacity的关系,这些方法不难掌握和记忆
下一个章节,我们会给出简单的实例来佐证这些方法的使用