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));
            }
        }
    }
}

posted @   JamieChyi  阅读(17)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示