1. 缓冲区(Buffer):
介绍
我们知道在BIO(Block IO)中其是使用的流的形式进行读取,可以将数据直接写入或者将数据直接读取到Stream对象中,但是在NIO中所有的数据都是使用的换冲区进行处理的,任何时候访问NIO的数据都是通过缓冲区进行操作的。
实质:
从下面的源码我们可以看到其实这个里面的ByteBuffer其实里面是一个数组,然后提供了一个offset的变量用于对数据进行结构化的访问以及维护读写为位置等信息。
public abstract class ByteBuffer
extends Buffer
implements Comparable<ByteBuffer>
{ // These fields are declared here rather than in Heap-X-Buffer in order to
// reduce the number of virtual method invocations needed to access these
// values, which is especially costly when coding small buffers.
//
final byte[] hb; // Non-null only for heap buffers
final int offset;
boolean isReadOnly;
常见的的Buffer:
1. ByteBuffer:面向字节的缓冲区
2. CharBuffer:字符缓冲区
3. ShortBuffer:短整形的缓冲区
4. IntBuffer:整形缓冲区
5. FloatBuffer:浮点型缓冲区
6. LongBuffer:长整形缓冲区
7. DoubleBuffer:双精度浮点型缓冲区
总结:
值得注意的是在Buffer缓冲区中没有BooleanBuffer缓冲区的实现,以上七中缓冲区的Buffer都是抽象类型。