65 lines
2.2 KiB
Java
65 lines
2.2 KiB
Java
import java.nio.CharBuffer;
|
|
|
|
public class BufferFlipCompact {
|
|
public static void main(String[] args) {
|
|
// 创建一个容量为8的CharBuffer
|
|
CharBuffer buffer = CharBuffer.allocate(8);
|
|
System.out.println("初始状态:");
|
|
printBufferStatus(buffer);
|
|
|
|
// 写入字符串"Hello"
|
|
buffer.put("Hello");
|
|
System.out.println("\n写入'Hello'后:");
|
|
printBufferStatus(buffer);
|
|
|
|
// 翻转缓冲区准备读取
|
|
buffer.flip();
|
|
System.out.println("\n翻转缓冲区后(flip):");
|
|
printBufferStatus(buffer);
|
|
|
|
// 读取前3个字符('H', 'e', 'l')
|
|
System.out.println("\n读取前3个字符:");
|
|
for (int i = 0; i < 3; i++) {
|
|
char c = buffer.get();
|
|
System.out.print(c + " ");
|
|
}
|
|
System.out.println();
|
|
|
|
System.out.println("\n读取3个字符后:");
|
|
printBufferStatus(buffer);
|
|
|
|
// 压缩缓冲区
|
|
buffer.compact();
|
|
System.out.println("\n压缩缓冲区后(compact):");
|
|
printBufferStatus(buffer);
|
|
|
|
// 再写入"World"
|
|
buffer.put("World");
|
|
System.out.println("\n写入'World'后:");
|
|
printBufferStatus(buffer);
|
|
|
|
// 翻转并打印最终缓冲区内容
|
|
buffer.flip();
|
|
System.out.println("\n最终缓冲区内容:");
|
|
while (buffer.hasRemaining()) {
|
|
System.out.print(buffer.get());
|
|
}
|
|
System.out.println();
|
|
|
|
// 显示完整的缓冲区内容(包括未读取的部分)
|
|
buffer.rewind(); // 回到开始位置
|
|
System.out.println("\n完整缓冲区内容:");
|
|
while (buffer.hasRemaining()) {
|
|
System.out.print(buffer.get());
|
|
}
|
|
System.out.println();
|
|
}
|
|
|
|
// 打印缓冲区状态
|
|
private static void printBufferStatus(CharBuffer buffer) {
|
|
System.out.println("Position: " + buffer.position() +
|
|
", Limit: " + buffer.limit() +
|
|
", Capacity: " + buffer.capacity() +
|
|
", Remaining: " + buffer.remaining());
|
|
}
|
|
} |