JavaSE:NIO - Buffer缓冲区概述 & ByteBuffer的创建方式
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) { // <1>第一种创建方式:在堆中创建缓冲区 - allocate (int capacity) ByteBuffer buffer1 = ByteBuffer.allocate(10); // <2>第二种创建方式:在系统内存创建缓冲区: allocateDirect(int capacity) ByteBuffer buffer2 = ByteBuffer.allocateDirect(10); // <3>第三种创建方式:通过普通数组,创建缓冲区: wrap(byte[] arr) byte[] arr = {97,98,99}; ByteBuffer buffer3 = ByteBuffer.wrap(arr); } }