package com.tiger;
import java.nio.ByteBuffer;
/**
* 缓冲区分片案例
* 在现有缓冲区对象中创建一个子缓冲区,即在现有缓冲区上切出一片作为一个新的缓冲区,
* 但现有缓冲区与创建的子缓冲区在底层数组层面上是数据共享;
* 也就是说,子缓冲区相当于是现有缓冲区的一个视图窗口
*
* @description:
* @author: tiger
* @create: 2021-05-02 10:05
*/
public class ByteBufferSliceDemo {
public static void main(String[] args) {
ByteBuffer buffer = ByteBuffer.allocate(10);
// 初始化缓冲区数据
for (int i = 0; i < buffer.capacity(); i++) {
buffer.put((byte) i);
}
// 创建子缓冲区
buffer.position(3);
buffer.limit(5);
ByteBuffer slice = buffer.slice();
// 改变缓冲区的内容
for (int i = 0; i < slice.capacity(); i++) {
byte b = slice.get(i);
b *= 10;
slice.put(i, b);
}
buffer.position(0);
buffer.limit(buffer.capacity());
while (buffer.remaining() > 0) {
System.out.println(buffer.get());
}
}
}