代码如下 public finalBufferflip(){ limit=position; position= 0;

时间:2021-10-30 06:12:39

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不乱,其值一直为常量。