讲一讲缓冲区 Buffer
【摘要】 1、缓冲区(Buffer)的数据存取一个用于特定基本数据类型的容器。由java.nio包定义,所有缓冲区都是Buffer抽象类的子类。Java NIO中的Buffer主要用于与NIO通道进行交互,数据是从通道读入缓冲区,从缓冲区写入通道中的。 A.缓冲区(Buffer)在Java NIO中负责数据的存取。缓冲区就是数组。用于存储不同数据类型的数据 B.缓冲区的类型根据数据类型不同(boole...
1、缓冲区(Buffer)的数据存取
一个用于特定基本数据类型的容器。由java.nio包定义,所有缓冲区都是Buffer抽象类的子类。
Java NIO中的Buffer主要用于与NIO通道进行交互,数据是从通道读入缓冲区,从缓冲区写入通道中的。
A.缓冲区(Buffer)
在Java NIO中负责数据的存取。缓冲区就是数组。用于存储不同数据类型的数据
B.缓冲区的类型
根据数据类型不同(boolean 除外),提供了相应类型的缓冲区:
- ByteBuffer
- CharBuffer
- ShortBuffer
- IntBuffer
- LongBuffer
- FloatBuffer
- DoubleBuffer
上述缓冲区的管理方式几乎一致,通过allocate()获取缓冲区
C.缓冲区存取数据的两个核心方法
put():存入数据到缓冲区中-
D.缓冲区的四个核心属性
-
capacity:容量,表示缓冲区中最大存储数据的容量。一旦声明不能改变
- limit:界限,表示缓冲区中可以操作数据的大小。(limit后数据不能进行读写)
- position:位置,表示缓冲区正在操作数据的位置
- mark:标记,表示当前position的位置。可以通过reset() 恢复到mark的位置
-
0 <= mark <= position <= limit <= capacity
2、直接缓冲区和非直接缓冲区
-
非直接缓冲区:通过
allocate()方法分配缓冲区,将缓冲区建立在JVM的内存中 - 直接缓冲区:通过
allocateDirect()方法分配直接缓冲区,将缓冲区建立在物理内存中。可以提高效率
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)