JavaSE:NIO - Buffer緩衝區概述 & ByteBuffer的建立方式
阿新 • • 發佈:2021-06-30
1. Buffer緩衝區概述
<1>作用:緩衝區,用來存放具體要被傳輸的資料,比如檔案、socket等。
在NIO中,資料被裝入Buffer後,再通過通道(Channel)進行傳輸
<2>Buffer就是一個數組,用來儲存不同資料型別的資料
在 NIO中,所有的緩衝區型別,都繼承於抽象類 Buffer, 最常用的就是 ByteBuffer。
對於 Java中的基本型別,基本都有一個具體的 Buffer型別與之對應,它們之間的繼承關係如下:
ByteBuffer:(儲存)位元組資料(到緩衝區)
ShortBuffer:(儲存)字串資料(到緩衝區)
CharBuffer:(儲存)字元資料(到緩衝區)
IntBuffer: (儲存)整數資料(到緩衝區)
LongBuffer: (儲存)長整型資料(到緩衝區)
DoubleBuffer: (儲存) 小數 (到緩衝區)
FloatBuffer: (儲存)小數 (到緩衝區)
對於Java中的基本資料型別,都有一個Buffer型別與之相對應,最常用的自然是ByteBuffer類 (二進位制資料)
2. ByteBuffer的建立方式
程式碼示例
<1> 在堆中建立緩衝區:allocate(int capacity)
<2> 在系統記憶體建立緩衝區:allocateDirect(int capacity)
<3> 通過普通陣列建立緩衝區:wrap(byte[] arr)
import java.nio.ByteBuffer; public class Demo01Buffer建立方式 { public static void main(String[] args) { // 在堆中建立緩衝區: allocate (int capacity)ByteBuffer buffer1 = ByteBuffer.allocate(10); // 在系統記憶體建立緩衝區: allocateDirect(int capacity) ByteBuffer buffer2 = ByteBuffer.allocateDirect(10); // 通過普通陣列,建立緩衝區: wrap(byte[] arr) byte[] arr = {97,98,99}; ByteBuffer buffer3 = ByteBuffer.wrap(arr); } }