1.remaining();返回当前位置与limit之间得元素数。

int[] intArray={1,2,3,4};
IntBuffer intBuffer=IntBuffer.wrap(intArray);
intBuffer.limit(3);
intBuffer.position(1);
System.out.println(intBuffer.remaining());

2.isDirect() 判断是否为直接缓冲区。

ByteBuffer byteBuffer=ByteBuffer.allocateDirect(100);
System.out.println(byteBuffer.isDirect());

3.clear()还原缓冲区得状态,是状态,不是数据;比如将position=0.market丢失掉。

byte[] byteArray=new byte[]{1,2,3};
ByteBuffer byteBuffer=ByteBuffer.wrap(byteArray);
byteBuffer.position(2);
byteBuffer.limit(3);
byteBuffer.mark(); byteBuffer.clear();
System.out.println("position:"+byteBuffer.position()+";limit:"+byteBuffer.limit());
try {
byteBuffer.reset();
} catch (Exception e) {
System.out.println("market已经丢失");
}

4.flip() 向缓冲区写入一些数据后,下一步直接读取缓冲区中得数据之前,以改变limit与position得值。

byte[] byteArray=new byte[]{1,2,3};
ByteBuffer byteBuffer=ByteBuffer.wrap(byteArray);
byteBuffer.position(2);
byteBuffer.mark(); byteBuffer.flip();
System.out.println("position:"+byteBuffer.position()+";limit:"+byteBuffer.limit());
try {
byteBuffer.reset();
} catch (Exception e) {
System.out.println("market已经丢失");
}

5.hasArray()判断此缓冲区是否具有可访问得底层实现数组。

ByteBuffer byteBuffer=ByteBuffer.allocate(100);
byteBuffer.put((byte) 1);
byteBuffer.put((byte) 2);
System.out.println(byteBuffer.hasArray()); ByteBuffer byteBuffer2=ByteBuffer.allocateDirect(100);
byteBuffer2.put((byte) 1);
byteBuffer2.put((byte) 2);
System.out.println(byteBuffer2.hasArray());

6.hasRemaining() 判断当前位置与限制之间是否有元素。

byte[] byteArray=new byte[]{1,2,3};
ByteBuffer bytebuffer=ByteBuffer.wrap(byteArray);
bytebuffer.limit(3);
bytebuffer.position(2);
System.out.println(bytebuffer.hasRemaining()+";"+bytebuffer.remaining());

7.rewind()  position置为0,标记清除掉,limit不变。

8.clear() position置为0,limit=capacity,market=-1.清除缓冲区得状态。

9.List.toArrat(T[])  转成数组。

ByteBuffer buffer1=ByteBuffer.wrap(new byte[]{'a','b','c'});
ByteBuffer buffer2=ByteBuffer.wrap(new byte[]{'x','y','z'});
ByteBuffer buffer3=ByteBuffer.wrap(new byte[]{'1','2','3'});
List<ByteBuffer> list=new ArrayList<ByteBuffer>();
list.add(buffer1);
list.add(buffer2);
list.add(buffer3); ByteBuffer[] byteBufferArray=new ByteBuffer[list.size()];
list.toArray(byteBufferArray);
System.out.println(byteBufferArray.length);
for(int i=0;i<byteBufferArray.length;i++){
ByteBuffer eachByteBuffer=byteBufferArray[i];
while (eachByteBuffer.hasRemaining()) {
System.out.print((char) eachByteBuffer.get());
}
System.out.println();
}

NIO基础方法一的更多相关文章

  1. 从零开始学 Web 之 ES6(三)ES6基础语法一

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  2. Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->使用spring framework的IoC容器功能----->方法一:使用XML文件定义beans之间的依赖注入关系

    XML-based configuration metadata(使用XML文件定义beans之间的依赖注入关系) 第一部分 编程思路概述 step1,在XML文件中定义各个bean之间的依赖关系. ...

  3. JBOSS通过Apache负载均衡方法一:使用mod_jk

    JBOSS通过Apache负载均衡方法一:使用mod_jk   本文第一.二节分别对Linux环境下前端使用Apache以及windows环境下前端使用IIS通过AJP协议和后端的JBOSS通信实现负 ...

  4. centos6.5下oracle11g开机自动启动方法一

    转裁于 方法一 https://blog.csdn.net/wx5040257/article/details/77875690 方法二  https://blog.csdn.net/wx504025 ...

  5. mybatis由浅入深day02_2一对一查询_2.2方法一:resultType

    2 一对一查询 2.1 需求(查询所有订单信息,关联查询创建订单的用户信息) 查询所有订单信息,关联查询创建订单的用户信息 注意:因为一个订单信息只会是一个人下的订单,所以从查询订单信息出发关联查询用 ...

  6. 头像文件上传 方法一:from表单 方法二:ajax

    方法一:from表单 html 设置form表单,内包含头像预览div,内包含上传文件input 设置iframe用来调用函数传参路径 <!--表单提交成功后不跳转处理页面,而是将处理数据返回给 ...

  7. vue抽取公共方法———方法一

    方法一:Vue插件 1.概述 作用:满足vue之外的需求,特定场景的需求 比如说,让你在每个单页面组件里,都可以调用某个方法(公共方法),或者共享某个变量等 2.使用方法 [声明插件]- [写插件]- ...

  8. 登录操作(方法一:设置flag标志位)

    登录操作(方法一:设置flag标志位) user_name="star"passwoed='123'passed_authentication=Falsecount=0for i ...

  9. JS数组 二维数组 二维数组的表示 方法一: myarray[ ][ ];方法二:var Myarr = [[0 , 1 , 2 ],[1 , 2 , 3, ]]

    二维数组 一维数组,我们看成一组盒子,每个盒子只能放一个内容. 一维数组的表示: myarray[ ] 二维数组,我们看成一组盒子,不过每个盒子里还可以放多个盒子. 二维数组的表示: myarray[ ...

随机推荐

  1. java对象的实例化过程

    简单类对象的实例化过程 1.在方法区加载类: 2.在栈内存申请空间,声明变量P: 3.在堆内存中开辟空间,分配对象地址: 4.在对象空间中,对对象的属性进行默认初始化,类成员变量显示初始化: 5.构造 ...

  2. Gradle 自定义插件

    使用版本 5.6.2 插件被用来封装构建逻辑和一些通用配置.将可重复使用的构建逻辑和默认约定封装到插件里,以便于其他项目使用. 你可以使用你喜欢的语言开发插件,但是最终是要编译成字节码在 JVM 运行 ...

  3. Dynamics 365中的Client API form context (formContext)

    适用于Dynamics 365 for Customer Engagement apps 9.x版本. 本文是一篇翻译,原文来源是微软官方文档. 本文链接:https://www.cnblogs.co ...

  4. linux bash变量作用域

    linux bash变量作用域 一,思考一个问题,当在shell里执行某个程序时,shell是怎么找到这个程序的? shell会去$PATH环境变量定义的目录里去找这个命令.环境变量里一般包括/usr ...

  5. CodeForces - 5C(思维+括号匹配)

    题意 https://vjudge.net/problem/CodeForces-5C 给出一个括号序列,求出最长合法子串和它的数量. 合法的定义:这个序列中左右括号匹配. 思路 这个题和普通的括号匹 ...

  6. java基础|自定义java线程池

    线程池创建的参数 在创建线程的各种方式中我们有讲到过通过创建线程池来完成异步操作,但实际上jdk提供的Executors来创建线程池都还有些缺陷,线程池有以下几个参数: 代码节选自源码ThreadPo ...

  7. flex招式心法

    flex布局绝对是我们平常在布局中用的最多的一个属性,我们来看看它在can i use中的浏览器支持度:(截止到2019/11/16) 挖藕,凹森!支持度居然这么好,好到连ie也能支持大部分的flex ...

  8. laravel开发大型电商网站之异常设计思路分析

    令人讨厌的异常 提起异常,大家都很反感,当信心满满的写完一段代码,刷新页面发现上面写着大大的 Exception 是最心烦的时候了.模块给领导演示的时候,如果报了异常,也是最让人崩溃的时候了. 在一般 ...

  9. 比特币原理——交易与UTXO

    UTXO UTXO (Unspent Transaction Output) 未花费交易输出 传统的支付系统都是基于账户(account based)的,即: 若A向B转账20元 判断A的账户余额大于 ...

  10. windows下安装了2个python,如何下载模块到不同的python中

    修改python名称即可,修改Scrpit下的pip名称即可,用不同的名称打开就行 https://www.cnblogs.com/legend-123/p/11195706.html