一、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详解的更多相关文章

  1. java NIO Buffer 详解(1)

    1.java.io  最为核心的概念是流(stream),面向流的编程,要么输入流要么输出流,二者不可兼具: 2.java.nio 中拥有3个核心概念: Selector Channel, Buffe ...

  2. Java NIO API详解

    在JDK 1.4以前,Java的IO操作集中在java.io这个包中,是基于流的同步(blocking)API.对于大多数应用来说,这样的API使用很方便,然而,一些对性能要求较高的应用,尤其是服务端 ...

  3. Java NIO API详解(转)

    原文连接: http://www.blogjava.net/19851985lili/articles/93524.html 感谢原作者 NIO API 主要集中在 java.nio 和它的 subp ...

  4. Java NIO全面详解(看这篇就够了)

    很多技术框架都使用NIO技术,学习和掌握Java NIO技术对于高性能.高并发网络的应用是非常关键的@mikechen NIO简介 NIO 中的 N 可以理解为 Non-blocking,不单纯是 N ...

  5. Java NIO 的前生今世 之四 NIO Selector 详解

    Selector Selector 允许一个单一的线程来操作多个 Channel. 如果我们的应用程序中使用了多个 Channel, 那么使用 Selector 很方便的实现这样的目的, 但是因为在一 ...

  6. Java String类详解

    Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...

  7. JAVA IO 类库详解

    JAVA IO类库详解 一.InputStream类 1.表示字节输入流的所有类的超类,是一个抽象类. 2.类的方法 方法 参数 功能详述 InputStream 构造方法 available 如果用 ...

  8. 前端后台以及游戏中使用Google Protocol Buffer详解

    前端后台以及游戏中使用Google Protocol Buffer详解 0.什么是protoBuf protoBuf是一种灵活高效的独立于语言平台的结构化数据表示方法,与XML相比,protoBuf更 ...

  9. Thrift实现C#调用Java开发步骤详解

    概述 Thrift实现C#调用Java开发步骤详解 详细 代码下载:http://www.demodashi.com/demo/10946.html Apache Thrift 是 Facebook ...

随机推荐

  1. 91.用js遍历原生json数据

    <!doctype html> <html lang="en"> <head>     <meta charset="UTF-8 ...

  2. TensorFlow NMT的词嵌入(Word Embeddings)

    本文转载自:http://blog.stupidme.me/2018/08/05/tensorflow-nmt-word-embeddings/,本站转载出于传递更多信息之目的,版权归原作者或者来源机 ...

  3. expdp、impdp导入导出数据库

    一.创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建.create directory dpdata1 as 'd:\test\dump'; 二.查看管理理员目录(同时 ...

  4. Golang 在 Mac、Linux、Windows 下如何交叉编译

    转自 https://blog.csdn.net/panshiqu/article/details/53788067 Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下 ...

  5. Mac下Mysql配置

    安装 http://www.mirrorservice.org/sites/ftp.mysql.com/Downloads/MySQL-5.6/mysql-5.6.41-macos10.13-x86_ ...

  6. Windows下安装Zabbix agent

    下载Windows版本的Zabbix agent安装包:https://www.zabbix.com/cn/download_agents#tab:40LTS 有两种安装方式: (1)需要手动安装,安 ...

  7. vsftp部署

    安装 yum install -y vsftpd systemctl enable vsftpd.service systemctl start vsftpd.service systemctl st ...

  8. Elasticsearch 概念理解

    官方文档地址 Filebeat: https://www.elastic.co/cn/products/beats/filebeat https://www.elastic.co/guide/en/b ...

  9. python基础语法13 内置模块 subprocess,re模块,logging日志记录模块,防止导入模块时自动执行测试功能,包的理论

    subprocess模块: - 可以通过python代码给操作系统终端发送命令, 并且可以返回结果. sub: 子    process: 进程 import subprocess while Tru ...

  10. NSSting NSData 与字符集合

    NSString 是为了人类阅读而存在的,必须进行编码,以使得bytes对人类有意义 String Objects An NSString object encodes a Unicode-compl ...