Java的NIO中有关Buffer的几种常用要领好比clear,rewind和flip到底有哪些区别。下面给大家这三种要领的源码,便利大家记忆。
clear()要领用于写模式,其感化为情况Buffer中的内容,所谓清空是指写上限与Buffer的真实容量不异,即limit==capacity,同时将当前写位置置为最前端下标为0处。代码如下:
public final Buffer clear() {
position = 0; //设置当前下标为0
limit = capacity; //设置写越界位置与和Buffer容量不异
mark = -1; //打消符号
return this;
}
rewind()在读写模式下都可用,它纯挚的将当前位置置0,同时打消mark符号,仅此而已;也就是说写模式下limit仍连结与Buffer容量不异,,只是重头写而已;读模式下limit仍然与rewind()挪用之前不异,也就是为flip()挪用之前写模式下的position的最后位置,flip()挪用后此位置变为了读模式的limit位置,即越界位置,代码如下:
public final Buffer rewind() {
position = 0;
mark = -1;
return this;
}
flip()函数的感化是将写模式改变为读模式,即将写模式下的Buffer中内容的最后位置变为读模式下的limit位置,作为读越界位置,同时将当前读位置置为0,暗示转换后重头开始读,同时再消除写模式下的mark符号,代码如下
public final Buffer flip() {
limit = position;
position = 0;
mark = -1;
return this;
}
这三种模式下Buffer的capacity不乱,其值一直为常量。