
目录
一、缓冲区
缓冲区是由具有相同类型的数值构成的数组,Buffer是一个抽象类,它有很多子类,包括ByteBuffer、CharBuffer、DoubleBuffer、IntBuffer、LongBuffer、ShortBuffer。
每个缓冲区都具有4个属性:
- 容量capacity,缓冲区能够容纳的数据元素的最大数量。这一容量在缓冲区创建时被设定,且永远不能被改变;
- 读写位置position,下一个要被读或写的元素的索引。位置会自动由相应的 get() 和 put() 函数更新。 这里需要注意的是positon的位置是从0开始,比如,已经写入buffer 3个元素那那么position就是指向第4个位置,即position设置为3(数组从0开始计);
- 界限limit,缓冲区的第一个不能被读或写的元素。缓冲区创建时,limit 的值等于 capacity 的值。假设 capacity = 1024,我们在程序中设置了 limit = 512,说明Buffer 的容量为 1024,但是从 512 之后既不能读也不能写,因此可以理解成,Buffer 的实际可用大小为 512;
- 可选的标记 mark,标记,一个备忘位置。保存某个时刻的position指针的值,通过调用mark()实现,当mark被置为负值时,表示废弃标记。标记在设定前是未定义的(undefined)。使用场景是,假设缓冲区中有 10 个元素,position 目前的位置为 2(也就是如果get的话是第
Java基础知识:深入理解ByteBuffer

本文详细介绍了Java中的缓冲区概念,重点讲解了ByteBuffer的使用,包括缓冲区的四个属性、常用方法、从不同源获取通道、数据的读写、视图缓冲区以及使用缓冲区的一般步骤。通过示例阐述了如何有效地操作ByteBuffer进行数据交换。
订阅专栏 解锁全文
171万+





