标记、位置、限制和容量值遵守以下不变式:
0 <= 标记 <= 位置 <= 限制 <= 容量
|
位置 |
限制 |
容量 |
标记 |
|
position |
limit |
capcity |
mark |
mark |
/ |
/ |
/ |
position |
reset |
position |
/ |
/ |
/ |
clear |
0 |
capcity |
/ |
丢弃 |
flip |
0 |
position |
/ |
/ |
rewind |
0 |
/ |
/ |
/ |
缓冲区的容量 是它所包含的元素的数量。缓冲区的容量不能为负并且不能更改。
缓冲区的限制 是第一个不应该读取或写入的元素的索引。缓冲区的限制不能为负,并且不能大于其容量。
缓冲区的位置 是下一个要读取或写入的元素的索引。缓冲区的位置不能为负,并且不能大于其限制。
(这部分是转载)
http://book.51cto.com/art/200902/109721.htm
表 5.4:在Buffer上创建不同透视的方法
方法
|
Capacity
|
新缓冲区的初始值
|
Position
|
Limit
|
Mark
|
ByteBuffer duplicate()
|
capacity
|
position
|
limit
|
mark
|
ByteBuffer slice()
|
remaining()
|
0
|
remaining()
|
未定义
|
ByteBuffer asReadOnlyBuffer()
|
capacity
|
position
|
limit
|
mark
|
CharBuffer asCharBuffer()
|
remaining()/2
|
0
|
remaining()/2
|
未定义
|
DoubleBuffer asDoubleBuffer()
|
remaining()/8
|
0
|
remaining()/8
|
未定义
|
FloatBuffer asFloatBuffer()
|
remaining()/4
|
0
|
remaining()/4
|
未定义
|
IntBuffer asIntBuffer()
|
remaining()/4
|
0
|
remaining()/4
|
未定义
|
LongBuffer asLongBuffer()
|
remaining()/8
|
0
|
remaining()/8
|
未定义
|
ShortBuffer asShortBuffer()
|
remaining()/2
|
0
|
remaining()/2
|
未
|
分享到:
相关推荐
缓冲区提供了四种基本操作:clear、flip、rewind和reset。 * clear():将缓冲区设置为准备好进行读取或写入操作,将限制设置为容量大小,将位置设置为0。 * flip():将缓冲区设置为准备好进行写入操作,将限制设置...
Java NIO(New Input/Output)是Java提供的一种新的输入输出处理机制,它与传统IO基于流的处理方式不同,NIO支持面向缓冲区的(Buffer-oriented)、基于通道的(Channel-based)I/O操作。在Java NIO中,Buffer类是...
### Java NIO 学习笔记 #### 一、概述 Java NIO (Non-Blocking IO,也称为 Java New IO),是 Java 对传统 IO 模型的一次重大改进,旨在提高程序处理大量并发连接的能力。NIO 的核心组件包括 Channels、Buffers 和 ...
Buffer提供了诸如clear、flip、rewind和mark等方法,用于管理和操作缓冲区中的数据。 2. **通道(Channel)**:通道类似于流,但它是双向的,可以进行读写操作。Java.nio.channels包中定义了多种类型的通道,如...
Java性能优化中,NIO(New Input/Output)框架是一个重要的技术,它的引入极大地提升了Java在处理I/O操作时的效率。NIO的核心组件包括Buffer(缓冲区)和Channel(通道),它们共同解决了传统I/O模型中的一些性能...
Java NIO API通过提供基于缓冲区和非阻塞IO操作的新模型,极大地提高了Java程序处理大量并发连接的能力。相比于传统的阻塞式IO模型,NIO在设计上更加灵活,也更适合现代网络环境的需求。通过深入理解`Buffer`、`...
- `reset()`: 将`position`重置为`mark`位置。 #### 七、使用示例 下面是一个简单的示例,展示了如何使用`ByteBuffer`来读写数据: ```java import java.nio.ByteBuffer; public class BufferExample { public ...
Buffer的操作主要包括:`put()`用于写入数据,`get()`用于读取数据,`clear()`和`flip()`用于重新配置缓冲区状态,`rewind()`将位置设为0,`hasRemaining()`检查是否有剩余数据,以及`mark()`和`reset()`进行标记和...