Java NIO Buffer详解
一、ByteBuffer类型化的put与get方法
/**
* ByteBuffer类型化的put与get方法
*/
public class NioTest5 { public static void main(String[] args) {
ByteBuffer buffer = ByteBuffer.allocate(64); buffer.putInt(5);
buffer.putLong(500000000L);
buffer.putDouble(13.456);
buffer.putChar('你');
buffer.putShort((short) 3); buffer.flip(); System.out.println(buffer.getInt());
System.out.println(buffer.getLong());
System.out.println(buffer.getDouble());
System.out.println(buffer.getChar());
System.out.println(buffer.getShort());
}
}
put和get的类型要一致。如第一个是putInt, 输出的使用第一个要用getInt。
二、Slice Buffer
/**
* Slice Buffer和原Buffer共享底层数组,任一一个改变,另外一个也会改变
*/
public class NioTest6 { public static void main(String[] args) {
ByteBuffer buffer = ByteBuffer.allocate(10);
for(int i = 0; i < buffer.capacity(); ++i){
buffer.put((byte)i);
} buffer.position(2);
buffer.limit(6); ByteBuffer sliceBuffer = buffer.slice(); for(int i = 0; i < sliceBuffer.capacity(); ++i){
byte b = sliceBuffer.get(i);
b *= 2;
sliceBuffer.put(i, b);
} buffer.position(0);
buffer.limit(buffer.capacity()); while (buffer.hasRemaining()){
System.out.println(buffer.get());
}
}
}
三、只读Buffer
/**
* 只读buffer,我们可以随时将一个普通Buffer调用asReadOnlyBuffer方法返回一个只读Buffer
* 但不能将一个只读Buffer转换为读写Buffer
*/
public class NioTest7 { public static void main(String[] args) {
ByteBuffer buffer = ByteBuffer.allocate(10); System.out.println(buffer.getClass());
for(int i = 0; i < buffer.capacity(); ++i){
buffer.put((byte)i);
} ByteBuffer readonlyBuffer = buffer.asReadOnlyBuffer();
System.out.println(readonlyBuffer.getClass()); readonlyBuffer.position(0);
readonlyBuffer.put((byte)2); }
}
对只读Buffer进行修改,将抛出异常

Java NIO Buffer详解的更多相关文章
- java NIO Buffer 详解(1)
1.java.io 最为核心的概念是流(stream),面向流的编程,要么输入流要么输出流,二者不可兼具: 2.java.nio 中拥有3个核心概念: Selector Channel, Buffe ...
- Java NIO API详解
在JDK 1.4以前,Java的IO操作集中在java.io这个包中,是基于流的同步(blocking)API.对于大多数应用来说,这样的API使用很方便,然而,一些对性能要求较高的应用,尤其是服务端 ...
- Java NIO API详解(转)
原文连接: http://www.blogjava.net/19851985lili/articles/93524.html 感谢原作者 NIO API 主要集中在 java.nio 和它的 subp ...
- Java NIO全面详解(看这篇就够了)
很多技术框架都使用NIO技术,学习和掌握Java NIO技术对于高性能.高并发网络的应用是非常关键的@mikechen NIO简介 NIO 中的 N 可以理解为 Non-blocking,不单纯是 N ...
- Java NIO 的前生今世 之四 NIO Selector 详解
Selector Selector 允许一个单一的线程来操作多个 Channel. 如果我们的应用程序中使用了多个 Channel, 那么使用 Selector 很方便的实现这样的目的, 但是因为在一 ...
- Java String类详解
Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...
- JAVA IO 类库详解
JAVA IO类库详解 一.InputStream类 1.表示字节输入流的所有类的超类,是一个抽象类. 2.类的方法 方法 参数 功能详述 InputStream 构造方法 available 如果用 ...
- 前端后台以及游戏中使用Google Protocol Buffer详解
前端后台以及游戏中使用Google Protocol Buffer详解 0.什么是protoBuf protoBuf是一种灵活高效的独立于语言平台的结构化数据表示方法,与XML相比,protoBuf更 ...
- Thrift实现C#调用Java开发步骤详解
概述 Thrift实现C#调用Java开发步骤详解 详细 代码下载:http://www.demodashi.com/demo/10946.html Apache Thrift 是 Facebook ...
随机推荐
- Unity手游汉化笔记③:UABE替换BMFont
总的笔记:https://www.cnblogs.com/guobaoxu/p/12055930.html 目录 一.Demo 二.分析思路 三.替换 四.总结 五.补充 工具: Unity版本:20 ...
- Python学习日记(三十七) Mysql数据库篇 五
pymsql的使用 初识pymysql模块 先在数据库中创建一个用户信息表,里面包含用户的ID.用户名.密码 create table userinfo( uid int not null auto_ ...
- Odoo定时任务(自动任务)
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826270.html 一:定时任务模型 Odoo中内置了一个定时任务模型 ir.cron ,它定义了一 ...
- JavaWeb项目前后端分离
前戏 前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦, 并且前后端分离会为以后的大型分布式架构.弹性计算架构.微 ...
- FRP 中文文档
https://github.com/fatedier/frp/blob/master/README_zh.md README | 中文文档 frp 是一个可用于内网穿透的高性能的反向代理应用,支持 ...
- Linux 定时任务的控制台导出导入到文件
这个不但适用于定时任务,也适用于一般的脚本. 以前喜欢用>>这样的快捷方式, 今天看到用tee命令的,也记下. 55 23 * * * /bin/sh /sql_bak/restore_s ...
- php析构函数什么时候调用?
析构函数何时被调用 析构函数在下边3种情况时被调用: 对象生命周期结束,被销毁时: 主动调用delete :(推荐学习:PHP编程从入门到精通) 对象i是对象o的成员,o的析构函数被调用时,对象i的析 ...
- SpringMVC+Mybatis学习
简单Web项目搭建: 一.流程 1. 导包 n个springMVC: 2个mybatis<其中一个是mybatis-spring>: 3个jackson包: 2. xml配置 web.xm ...
- async 珠峰培训node正式课笔记 【async】任务流程控制,异步流程控制
var async = require('async'); // series 串形任务 console.time('cost') async.series({ two:function(callba ...
- static在Swift 中表示 “类型范围作用域”
In Swift, however, type properties are written as part of the type’s definition, within the type’s o ...