首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java NIO 緩衝區 Buffer(二):創建與復制緩衝區

     編輯:Java 相關知識

創建緩衝區的方式

1. allocate 方法

調用 allocate(capacity) 返回 HeapCharBuffer,緩存空間在 JVM 堆中(char[] hb)。示例:

CharBuffer bf = CharBuffer.allocate(10);

注意:ByteBuffer 還有 allocateDirect 分配直接內存(堆外),調用 hasArray() 返回 false。

2. wrap 方法

調用 wrap(array) 返回 HeapCharBuffer,緩存空間使用外部傳入數組。示例:

char[] myArray = new char[10];
CharBuffer charbuffer = CharBuffer.wrap(myArray);

重載方法 wrap(array, offset, length) 可指定起始位置和長度,創建的 Buffer:position = offset, limit = offset+length, capacity = array.length。

復制緩衝區的方式

1. duplicate 方法(淺拷貝)

創建原緩衝區拷貝,共享數據元素,但 position、limit、capacity 等屬性獨立。修改其中一個的元素會影響另一個。

CharBuffer charbuffer1 = CharBuffer.allocate(10);
CharBuffer charbuffer2 = charbuffer1.duplicate();
charbuffer1.put('a').put('b').put('c');
charbuffer1.flip();
System.out.println(charbuffer1); // abc
System.out.println(charbuffer2); // abc

2. asReadOnlyBuffer 方法(只讀拷貝)

生成只讀緩衝區,與 duplicate 類似,但對其 put 操作拋出 ReadOnlyBufferException。

3. slice 方法(分割視圖)

創建從原緩衝區當前 position 開始的新緩衝區,容量為 limit - position,共享數據序列。示例:

CharBuffer charbuffer1 = CharBuffer.allocate(10);
charbuffer1.position(2).limit(5);
CharBuffer charbuffer2 = charbuffer1.slice();
// charbuffer1: pos=2, lim=5, cap=10
// charbuffer2: pos=0, lim=3, cap=3
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved