`

[java][nio]视图缓冲器

阅读更多

import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.DoubleBuffer;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import java.nio.LongBuffer;
import java.nio.ShortBuffer;

public class ViewBuffers {

	public static void main(String[] args) {
		ByteBuffer bb = ByteBuffer.wrap(new byte[]{0,0,0,0,0,0,0,'a'});
		println(bb.position());//0
		bb.rewind();
		println(bb.position());//0
		
		print("byte buffer: ");
		while(bb.hasRemaining()){
			System.out.print(bb.position() + " -> " + bb.get() + ", ");
		}
		print();
		
		CharBuffer cb = ((ByteBuffer)bb.rewind()).asCharBuffer();
		print("char buffer: ");
		while(cb.hasRemaining()){
			System.out.print(cb.position() + " -> " + cb.get() + ", ");
		}
		print();
		
		FloatBuffer fb = ((ByteBuffer)bb.rewind()).asFloatBuffer();
		print("float buffer: ");
		while(fb.hasRemaining()){
			System.out.print(fb.position() + " -> " + fb.get() + ", ");
		}
		print();
		
		IntBuffer ib = ((ByteBuffer)bb.rewind()).asIntBuffer();
		print("int buffer: ");
		while(ib.hasRemaining()){
			System.out.print(ib.position() + " -> " + ib.get() + ", ");
		}
		print();
		
		LongBuffer lb = ((ByteBuffer)bb.rewind()).asLongBuffer();
		print("Long buffer: ");
		while(lb.hasRemaining()){
			System.out.print(lb.position() + " -> " + lb.get() + ", ");
		}
		print();
		
		ShortBuffer sb = ((ByteBuffer)bb.rewind()).asShortBuffer();
		print("short buffer: ");
		while(sb.hasRemaining()){
			System.out.print(sb.position() + " -> " + sb.get() + ", ");
		}
		print();
		
		DoubleBuffer db = ((ByteBuffer)bb.rewind()).asDoubleBuffer();
		print("double buffer: ");
		while(db.hasRemaining()){
			System.out.print(db.position() + " -> " + db.get() + ", ");
		}
		print();
		

	}
	
	static void print(Object o){
		System.out.print(o);
	}
	
	static void println(Object o){
		System.out.println(o);
	}
	
	static void print(){
		System.out.println();
	}

}
/*
0
0
byte buffer: 0 -> 0, 1 -> 0, 2 -> 0, 3 -> 0, 4 -> 0, 5 -> 0, 6 -> 0, 7 -> 97, 
char buffer: 0 ->   , 1 -> , 2 -> , 3 -> a, 
float buffer: 0 -> 0.0, 1 -> 1.36E-43, 
int buffer: 0 -> 0, 1 -> 97, 
Long buffer: 0 -> 97, 
short buffer: 0 -> 0, 1 -> 0, 2 -> 0, 3 -> 97, 
double buffer: 0 -> 4.8E-322, 


*/

分享到:
评论

相关推荐

    Java NIO.pdf

    - `slice()`:返回当前缓冲区的一个视图,从当前位置开始。 5. **特殊缓冲区**: - **直接缓冲区**:通过 `allocateDirect()` 创建,数据直接存放在操作系统内核中,绕过 JVM 的堆,从而提高 I/O 效率。 - **间接...

    java物联网源码-IOtest:JavaNIO与linuxepoll和WindowsAysnchronous之间的一些测试程序,带有源代码视

    Java NIO的核心组件包括通道(Channels)、缓冲区(Buffers)和选择器(Selectors)。通道类似于流,但支持双向数据传输,且可以被选择器监控以等待I/O事件。缓冲区提供了一种有效地在通道之间传输数据的方式,而选择器则...

    NIO trick and trap .pdf

    - **概念**:`java.nio.channels.Channel`接口定义了一个用于执行I/O操作的对象,它可以将数据从源读取到缓冲区或将数据从缓冲区写入目标。 - **类型**:包括但不限于`FileChannel`、`SocketChannel`和`...

    JAVA文件管理器原代码

    此外,java.nio包提供了更现代的非阻塞I/O操作,如通道(Channels)、缓冲区(Buffers)和文件映射(File Mapping)。 4. **多线程**: 对于复杂的文件操作,如大文件的复制或移动,可能会涉及到多线程,以确保...

    Java编程技术文摘

    NIO基于通道(Channels)和缓冲区(Buffers),并且提供了选择器(Selectors)来同时监听多个通道的事件。这种方式尤其适用于高并发的网络应用。 总的来说,Java编程技术文摘是Java开发者不可或缺的学习资料,它...

    java new IO

    视图缓冲器(View Buffer)是NIO的另一项创新,它允许我们通过特定基础数据类型的视图来访问底层的ByteBuffer,如CharBuffer、ShortBuffer等。这种视图机制使得在ByteBuffer中操作不同数据类型变得更加便捷,而对...

    java web 及 IO 的一些代码

    6. **NIO(非阻塞IO)**:Java 1.4引入了NIO(New IO)库,提供了选择器和通道等新概念,支持异步IO操作,提高了处理大量并发连接的能力。 在这个压缩包中,我们可能找到针对这些概念的简单示例代码,这对于初学者...

    java8高级应用与开发课件及案例代码

    IO流是数据传输的基础,涵盖了输入流、输出流、缓冲流、对象流等概念,还可能涉及NIO(New IO)和NIO.2的特性,如Channel、Buffer和Selector。 2. **第2章 JDBC编程**: JDBC是Java数据库连接,是Java与数据库交互的...

    java技术文档及功能详细说明

    10. **Spring框架**:Spring是Java企业级应用的主流框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等特性,简化了开发和测试。 11. **JUnit与Mockito**:这两个是Java单元测试的工具,JUnit...

    JAVA笔试面试宝典--JAVA笔试面试必看

    2. NIO:非阻塞I/O模型,通道(Channel)和缓冲区(Buffer)的使用,选择器(Selector)的应用。 五、网络编程 1. Socket编程:理解TCP和UDP协议,如何创建和使用Socket进行数据传输。 2. HTTP协议:了解HTTP请求...

    最全的JAVA面试题库

    - NIO:非阻塞I/O,通道、缓冲区的概念。 - Lambda表达式:函数式编程,理解方法引用和构造器引用。 - Stream API:处理集合的新方式,流的操作和组合。 3. **Java EE基础**: - Servlet:HTTP请求处理,会话...

    java项目培训材料

    9. **MVC架构**:模型-视图-控制器(MVC)是一种常见的软件设计模式,常用于Web应用开发。理解其工作原理和如何在Java项目中实现。 10. **版本控制**:使用Git进行版本控制,理解分支、合并和冲突解决等概念,这...

    2018JAVA经典就业面试大纲

    2. NIO(New IO):理解NIO的非阻塞特性,包括选择器(Selector)、通道(Channel)和缓冲区(Buffer)。 五、反射与动态代理 1. 反射:了解反射的基本原理,能通过反射操作类、方法和字段。 2. 动态代理:理解...

    Java网编程原理与JSP.Web开发核心技术

    7. MVC设计模式在JSP中的应用:JSP常常与Servlet、JavaBeans和JDBC等技术结合起来,构成MVC(模型-视图-控制器)设计模式,实现分层的Web应用开发。 8. JSP的性能优化:为了提高JSP页面的执行效率,开发者需要考虑...

    java思维导图.zip

    - **I/O流**: 字节流、字符流、缓冲流、对象流,以及NIO(New I/O)框架。 - **反射**: 运行时动态获取类信息并操作对象。 - **注解**: 提供元数据,用于编译时或运行时处理。 - **模块系统** (Java 9及以上): ...

    Java内存模型详解

    直接缓冲区是Java NIO框架的一部分,它可以绕过JVM的堆空间,直接访问物理内存,从而提高I/O操作的效率。 #### 4. 防止内存泄漏 在Java开发中,内存泄漏是一个常见的问题。以下是一些防止内存泄漏的方法: - **弱...

    深入体验Java项目开发源代码

    3. **IO与NIO**:Java的输入输出系统和新IO(NIO)库在处理文件、网络通信等方面起着关键作用。源码可能会包含使用流、缓冲区和通道进行数据传输的示例。 4. **网络编程**:Java提供了丰富的API进行网络编程,如...

    黑马java面试宝典

    - Spring MVC:模型-视图-控制器的工作原理。 - Spring Boot:快速开发工具,自动配置原理。 10. **JVM**: - 类加载过程:加载、验证、准备、解析、初始化。 - 垃圾收集:GC算法、分代理论、垃圾收集器的选择...

Global site tag (gtag.js) - Google Analytics