缓冲区(Buffer)
- 简介
缓冲区(Buffer):缓冲区本质上是一个可以读写数据的内存块,可以理解成是一个容器对象(含数组),该对象提供了一组方法,可以更轻松地使用内存块, 缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况。Channel 提供从文件、网络读取数据的渠道,但是读取或写入的数据都必须经由 Buffe
- 在 NIO 中,Buffer 是一个顶层父类,它是一个抽象类, 类的层级关系图
1) ByteBuffer,存储字节数据到缓冲区 2) ShortBuffer,存储字符串数据到缓冲区 3) CharBuffer,存储字符数据到缓冲区 4) IntBuffer,存储整数数据到缓冲区 5) LongBuffer,存储长整型数据到缓冲区 6) DoubleBuffer,存储小数到缓冲区 7) FloatBuffer,存储小数到缓冲区
-
Buffer类定义了所有的缓冲区都具有的四个属性来提供关于其所包含的数据元素的信息:
-
debug如下代码
public class BasicBuffer { public static void main(String[] args) { //举例说明 Buffer 的使用(简单说明) //创建一个 Buffer,大小为 5,即可以存放 5 个 int IntBuffer intBuffer = IntBuffer.allocate(5); //向buffer存放数据 for (int i = 0; i < intBuffer.capacity(); i++) { intBuffer.put(i * 2); } //如何从 buffer 读取数据 //将 buffer 转换,读写切换(!!!) intBuffer.flip(); while (intBuffer.hasRemaining()) { System.out.println(intBuffer.get()); } } }
-
初始值如下
-
执行反转操作后
# 反转方法的源码为 public Buffer flip() { limit = position; position = 0; mark = -1; return this; }
-
如果在执行反转操作后指定值,则只能读取到索引为1,2的值
-
Buffer类相关方法
-
最常用的是ByteBuffer 类(二进制数据),该类的主要方法如下
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南