首先澄清一点:这三个方法都是ByteBuffer的抽象基类Buffer定义的方法,ByteBuffer只是继承了它们.
clear() 使缓冲区为一系列新的通道读取或相对放置 操作做好准备:它将限制设置为容量大小,将位置设置为 0.
通道读取指从通道将数据读入到buffer中,相对放置是从位置开始将数据插入到buffer中
flip() 使缓冲区为一系列新的通道写入或相对获取 操作做好准备:它将限制设置为当前位置,然后将位置设置为 0.
把限制设置为当前位置是为了保证数据的可靠性.让从buffer写入到通道的数据是buffer中确实是已经存在的数据.
rewind() 使缓冲区为重新读取已包含的数据做好准备:它使限制保持不变,将位置设置为 0.
和clear()类似,只是不改动限制
这三个方法在源码上就对缓冲区的数据不进行任何修改