Java中Buffer的目的是什么?

时间:2017-05-04 01:28:47

标签: java buffer

Buffer是一个具有具体子类的抽象类,如ByteBuffer,IntBuffer等。它似乎是特定基本类型数据的容器。缓冲区有什么好处?为什么我不会使用数组或列表?

2 个答案:

答案 0 :(得分:3)

缓冲区可以以其最简单的形式定义为某种类型的连续内存块。因此,大小为4K(4096字节)的字节缓冲区可能会占用内存位置0xf0000xffff

至于为什么可以使用缓冲区类型而不是数组或列表,这两个备选方案都没有limitpositionmark的内置功能。< / p>

在第一项上,缓冲区将capacitylimit分开,因为您的capacity为1000,当前limit为10。单词,它强制执行可变大小的能力,包括 capacity

对于其他两个特性,当前position提供了一种内置的方式来读取或写入下一个元素,简化了顺序处理,mark提供了一种保存当前position的方法。 1}}以便稍后重置。

如果您需要将额外变量与数组或列表结合使用,则所有这些功能都需要额外变量。

当然,如果您不需要任何这些功能,那么请务必使用数组。

答案 1 :(得分:0)

Java NIO中的缓冲区可以被视为一个简单的对象,它充当固定大小的数据块容器,可用于将数据写入通道或从通道读取数据,从而使缓冲区充当通道的端点。

它提供了一组方法,可以更方便地处理内存块,以便在通道之间读写数据。

与传统IO相比,缓冲区使NIO包更高效,更快,因为IO数据以不支持异步和并发数据流的流形式处理,并且IO不允许以块或字节组。