NIO-java.nio.ByteBuffer中flip、rewind、clear方法的区别
Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。
Buffer的基本用法
- 写入数据到Buffer
- 调用flip()方法
- 从Buffer中读取数据
- 调用clear()方法或者compact()方法
Buffer的capacity,position和limit
- capacity
- position
- limit
 
capacity
position
limit
Buffer的类型
- ByteBuffer
- MappedByteBuffer
- CharBuffer
- DoubleBuffer
- FloatBuffer
- IntBuffer
- LongBuffer
- ShortBuffer
Buffer的分配
| 1 | ByteBuffer buf = ByteBuffer.allocate(48); | 
| 1 | CharBuffer buf = CharBuffer.allocate(1024); | 
向Buffer中写数据
- 从Channel写到Buffer。
- 通过Buffer的put()方法写到Buffer里。
| 1 | int bytesRead = inChannel.read(buf); //read into buffer. | 
| 1 | buf.put(127); | 
flip()方法
从Buffer中读取数据
- 从Buffer读取数据到Channel。
- 使用get()方法从Buffer中读取数据。
| 1 | //read from buffer into channel. | 
| 2 | int bytesWritten = inChannel.write(buf); | 
| 1 | byte aByte = buf.get(); | 
rewind()方法
clear()与compact()方法
mark()与reset()方法
equals()与compareTo()方法
equals()
- 有相同的类型(byte、char、int等)。
- Buffer中剩余的byte、char等的个数相等。
- Buffer中所有剩余的byte、char等都相同。
compareTo()方法
- 第一个不相等的元素小于另一个Buffer中对应的元素 。
- 所有元素都相等,但第一个Buffer比另一个先耗尽(第一个Buffer的元素个数比另一个少)。
- limit:所有对Buffer读写操作都会以limit变量的值作为上限。
- position:代表对缓冲区进行读写时,当前游标的位置。
- capacity:代表缓冲区的最大容量(一般新建一个缓冲区的时候,limit的值和capacity的值默认是相等的)。
clear方法
flip方法
rewind方法
NIO-java.nio.ByteBuffer中flip、rewind、clear方法的区别的更多相关文章
- java.nio.ByteBuffer中flip,rewind,clear方法的区别
		对缓冲区的读写操作首先要知道缓冲区的下限.上限和当前位置.下面这些变量的值对Buffer类中的某些操作有着至关重要的作用: limit:所有对Buffer读写操作都会以limit变量的值作为上限. p ... 
- Java Scanner类中next()和nextLine()方法的区别
		今天在练习中遇到了调用Scanner类中的nextLine()输入字符串自动跳过的问题,在博客上看了两篇解答,原来是nextLine()误认了前面next()输入时的Enter,但还是想了一会儿才弄清 ... 
- Java线程池中submit() 和 execute()方法的区别
		两个方法都可以向线程池提交任务, execute()方法的返回类型是void,它定义在Executor接口中, 而submit()方法可以返回持有计算结果的Future对象,它定义在ExecutorS ... 
- Java线程中run和start方法的区别
		http://bbs.csdn.net/topics/350206340 Thread类中run()和start()方法的区别如下:run()方法:在本线程内调用该Runnable对象的run()方法 ... 
- java在acm中常用基础技巧方法
		java在acm中常用基础技巧方法 如果学到了新的技巧,本博客会更新~ input input-std @Frosero import java.util.*; public class Main { ... 
- 深入理解jQuery中live与bind方法的区别
		本篇文章主要是对jQuery中live与bind方法的区别进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 注意如果是通过jq添加的层和对象一定要用live(),用其他的都不起作用 ... 
- js正则表达式中test,exec,match方法的区别说明
		js正则表达式中test,exec,match方法的区别说明 test test 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var ... 
- jQuery中attr和prop方法的区别
		jQuery中attr和prop方法的区别。 http://my.oschina.net/bosscheng/blog/125833 http://www.javascript100.com/?p=8 ... 
- C#中抽象方法与虚方法的区别(转)
		C#中抽象方法与虚方法的区别 一.抽象方法:只在抽象类中定义,方法修饰符不能使用private,virtual,static. 抽象方法如下示: public abstract class Peo ... 
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
		对缓冲区的读写操作首先要知道缓冲区的下限.上限和当前位置.下面这些变量的值对Buffer类中的某些操作有着至关重要的作用: limit:所有对Buffer读写操作都会以limit变量的值作为上限. p ... 
随机推荐
- JAVA通过身份证号码获取出生日期、年龄、性别
			JAVA验证身份证号码是否正确:https://www.cnblogs.com/pxblog/p/12038278.html /** * 通过身份证号码获取出生日期(birthday).年龄(age) ... 
- golang切片的一些自问自答
			你好,我是轩脉刃.这篇是关于go切片的一些问题和回答. go的切片基本上是代码中使用最多的一种数据结构了,使用这种数据结构有哪些要注意的点,这个是非常必要了解的东西.基本上,以前写的一篇博客 http ... 
- elementUI表单嵌套表格并对每行进行校验
			elementUI表单嵌套表格并对每行进行校验 elementUI 表单嵌套表格并进行校验. 目录 效果展示 代码链接 关键代码 完整代码 效果展示 先看看这是不是需要的效果^_^  如图,Elem ... 
- Java面向对象笔记 • 【第9章 JDBC编程】
			全部章节 >>>> 本章目录 9.1 JDBC基础 9.1.1 JDBC简介 9.1.2 JDBC常用API简介 JDBC 常用API功能说明 9.1.3 JDBC编程步骤 ... 
- Zookeeper使用超级用户删除带权限的节点
			1.背景 Zookeeper管理员会因为某些客户端对某些节点设置了权限,而导致在紧急的情况下无法修改这些节点感到困扰.在这种情况下,管理员可以通过Zookeeper超级用户模式访问这些节点,一旦设置了 ... 
- Windows下安装配置jdk
			1.jdk安装 从官网获取jdk安装包后, 双击图形化安装,一路next即可. 2.配置JavaHome 打开计算机->系统属性->高级系统设置->环境变量 在系统变量下面添JAVA ... 
- Python中单下划线与双下划线用法总结
			看mentor的脚本时,遇到self._item.callspec.getparam('')语句,理解起来比较困难,找到一篇文章,记录的比较详细,特别记录一下,以备复习. 附链接地址:http://w ... 
- ORACLE 之 按月循环执行操作
			DECLARE i number; BEGIN i:= 201705; WHILE i <202104 LOOP if i=201713 then i:=201801; elsif i=2018 ... 
- 关于Mysql的Qcache优化
			query_cache_size = 64M 指定MySQL查询缓冲区的大小.可以通过在MySQL控制台执行以下命令观察:# > SHOW VARIABLES LIKE '%query_cach ... 
- js 多层 元素叠起来避免误触的解决方法
			添加一层 元素,将点击事件设为 onClick="event.cancelBubble = true" 这样就能将两个可触发事件的元素给隔开 
