对缓冲区的读写操作首先要知道缓冲区的下限、上限和当前位置。下面这些变量的值对Buffer类中的某些操作有着至关重要的作用:

  1. limit:所有对Buffer读写操作都会以limit变量的值作为上限。
  2. position:代表对缓冲区进行读写时,当前游标的位置。
  3. capacity:代表缓冲区的最大容量(一般新建一个缓冲区的时候,limit的值和capacity的值默认是相等的)。

flip、rewind、clear这三个方法便是用来设置这些值的。

clear方法

public final Buffer clear()
{
    position = 0; //重置当前读写位置
    limit = capacity; 
    mark = -1;  //取消标记
    return this;
}

clear方法将缓冲区清空,一般是在重新写缓冲区时调用。

flip方法

public final Buffer flip() {
 limit = position;
 position = 0;
 mark = -1;
 return this;
}

反转缓冲区。首先将限制设置为当前位置,然后将位置设置为 0。如果已定义了标记,则丢弃该标记。 常与compact方法一起使用。通常情况下,在准备从缓冲区中读取数据时调用flip方法。

rewind方法

1public final Buffer rewind() {
2 position = 0;
3 mark = -1;
4 return this;
5}

以上三种方法均使用final修饰,java.nio.Buffer的所有子类均使用同一种flip、clear和rewind机制。

java.nio.ByteBuffer中flip、rewind、clear方法的区别相关推荐

  1. [转] java.nio.ByteBuffer中flip、rewind、clear方法的区别

    转载 对缓冲区的读写操作首先要知道缓冲区的下限.上限和当前位置.下面这些变量的值对Buffer类中的某些操作有着至关重要的作用: limit:所有对Buffer读写操作都会以limit变量的值作为上限 ...

  2. java nio rewind_NIO-java.nio.ByteBuffer中flip、rewind、clear方法的区别

    原文链接     作者:Jakob Jenkov     译者:airu     校对:丁一 Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到 ...

  3. NIO-java.nio.ByteBuffer中flip、rewind、clear方法的区别

    原文链接     作者:Jakob Jenkov     译者:airu     校对:丁一 Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到 ...

  4. java nio rewind_java.nio.ByteBuffer中的flip()、rewind()、compact()等方法的使用和区别

    java.nio.ByteBuffer 1. ByteBuffer中的参数position.limit.capacity.mark含义: position:表示当前指针的位置(下一个要操作的数据元素的 ...

  5. java.nio.Buffer 中的 flip()方法

    在Java NIO编程中,对缓冲区操作常常需要使用  java.nio.Buffer中的 flip()方法. Buffer 中的 flip() 方法涉及到 Buffer 中的capacity.posi ...

  6. hbase 2.4 java.lang.NoSuchMethodError: java.nio.ByteBuffer.rewind()Ljava/nio/ByteBuffer

    hbase 2.4集群环境启动报错,java.lang.NoSuchMethodError: java.nio.ByteBuffer.rewind()Ljava/nio/ByteBuffer ​ 详细 ...

  7. java.nio.ByteBuffer用法小结

    转载自  java.nio.ByteBuffer用法小结 在NIO中,数据的读写操作始终是与缓冲区相关联的.读取时信道(SocketChannel)将数据读入缓冲区,写入时首先要将发送的数据按顺序填入 ...

  8. Java的Map中的map.keySet()方法

    参考: java 常用的数据结构 一:Java的Map中的map.keySet()方法 该方法返回map中所有key值的列表. 今天再代码中看到了Map集合中的HashMap的map.keySet() ...

  9. java foward_java 中sendredirect()和forward()方法的区别

    HttpServletResponse.sendRedirect与RequestDispatcher.forward方法都可以实现获取相应URL资源. sendRedirect实现请求重定向,forw ...

最新文章

  1. 07 Java面试反射原理
  2. python的集合运算和set相关操作
  3. 【爬虫笔记】Scrapy爬虫技术文章网站
  4. Intellij IDEA 2019 自动生成 serialVersionUID
  5. 【solr专题之四】在Tomcat 中部署Solr4.x
  6. FastReport.Net 使用字符串
  7. SpringAOP Aspect注解实现简单日志功能
  8. ArcEngine开发之自定义工具
  9. 基于transformer的车辆识别
  10. python画太阳花输出为图片文件
  11. C++校内模拟赛-06水题
  12. 驻点、极值点、拐点间的区别和联系
  13. 数据库原理题型 - 选择题
  14. JAVA用爬山法解决八皇后问题_八皇后问题爬山法实现(C语言)
  15. [Python] RSS 文字转图片并单独抓取url以文字输出
  16. 【Android】带可输入功能的下拉框EditSpinner,附带Filter功能
  17. 美国Disqus、国内JiaThis、友言、评论啦、搜狐畅言 评论系统(第三方评论系统)
  18. Android studio 电话号码归属地查询app简易版
  19. java 日文片假名半角转全角_日文 全角/半角 平假名/片假名 的转换
  20. C/C++:全排列问题

热门文章

  1. apiCloud中api.ajax方法跨域传参获取数据
  2. Spark in meituan http://tech.meituan.com/spark-in-meituan.html
  3. Flume-NG一些注意事项(转)
  4. 技术大牛长成记之不要光看热闹
  5. 图像处理之log---log算子
  6. 三级火箭力助搜狗快速盈利
  7. ijkplayer-android框架详解
  8. MATLAB排列组合函数--nchoosek
  9. 高级数据结构研究-B树系列以及红黑树
  10. linux内存管理——kmalloc和vmalloc