NIO的基本概念和缓冲区
NIO:
缓冲区:
在NIO库中,所有的数据都是用缓冲区处理的,在读取数据时,它是直接读到缓冲区的,在写入数据时,它是写入到缓冲区的,任何时候访问NIO中的数据,你都是将它放到缓冲区中。
缓冲区实质上是一个数组,通常它是一个字节数组,但是也可以使用其他种类的数组,但是一个缓冲区不仅仅是一个数组,缓冲区提供了对数据的结构化访问,而且还可以跟踪系统的读写进程
缓冲区类型:
最常用的缓冲区类型是ByteBuffer
。一个ByteBuffer可以在其底层字节数组上进行get/set操作(即字节的获取和设置)。ByteBuffer不是NIO中唯一的缓冲区类型,事实上,对于每一种基本java类型都有一种缓冲区类型
相关代码
public class Test14 {
public static void main(String[] args) {
//创建一个字节缓冲区,申请内存空间为8个字节
ByteBuffer buf = ByteBuffer.allocate(10);
System.out.println("position=" + buf.position());//0
System.out.println("limit=" + buf.limit());//10
System.out.println("capacity=" + buf.capacity());//10
System.out.println("-------------------");
// 向缓冲区中写入数据
buf.put((byte) 12);
buf.put((byte) 13);
buf.put("lalla".getBytes());
System.out.println("position=" + buf.position());//7
System.out.println("limit=" + buf.limit());//10
System.out.println("capacity=" + buf.capacity());//10
System.out.println("-------------------");
//缓冲区反转
buf.flip();
System.out.println("position=" + buf.position());//0
System.out.println("limit=" + buf.limit());//7
System.out.println("capacity=" + buf.capacity());//10
// 告知当前位置和标记位置是否有元素
if (buf.hasRemaining()) {
for (int i = 0; i < buf.remaining(); i++) {
System.out.println(buf.get(i));
}
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!