1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
package com.efl.nio;
import java.nio.IntBuffer;
/**
* Author: Azad-eng
* Date: 2022/2/26
* Description:演示NIO核心组件之一Buffer的使用
*/
public class BasicBuffer {
public static void main(String[] args) {
/**
* 思路分析:
* 1.创建一个IntBuffer,容量为5个int
* 2.向里面存放数据10,11,12,13,14
* 3.从里面读取数据
*/
IntBuffer intBuffer = IntBuffer.allocate(5);
//存放数据,执行该方法一次,position在底层会自动+1
intBuffer.put(10);
//循环存放数据(不能超过intBuffer的容量限制),前面已经存放了2个int了,所以后面intBuffer.capacity()-2
for (int i = 0; i < intBuffer.capacity() - 2; i++) {
intBuffer.put(i + 12);
}
//如何从intBuffer中读取数据?
//读写切换(这里需要:写——>读)
intBuffer.flip();
/**
* 常用方法如下:
*/
//将index的位置position设置为数组的第2位,即从第2位开始读,结果输出为11,12,13,14
intBuffer.position(1);
//设置能读取到的数组数据的最大限制(不能>=3个数据,即只能输出2个),结果输出为11,12
intBuffer.limit(3);
//循环读取数据:
while (intBuffer.hasRemaining()){
//get()里面维护的是一个index,每get一次,索引就往右移动一次
//一个int=2bytes
// 10 11 12 13 14
// ^ ^ ^ ^ ^
// ————————————————————
//| 0 | 2 | 4 | 6 | 8 |
// ————————————————————
// ^
// |
System.out.println(intBuffer.get());
}
//get(int index) 可以读取指定索引位置处的数据
System.out.println(intBuffer.get(2));
}
}
|