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都是抽象型別。