WEB开发网
开发学院软件开发Java Java网络编程从入门到精通(33):非阻塞I/O的缓冲... 阅读

Java网络编程从入门到精通(33):非阻塞I/O的缓冲区(Buffer)

 2009-09-22 00:00:00 来源:WEB开发网   
核心提示: 其他五个缓冲区类中的wrap 方法定义和上面的定义类似,只是返回值的类型是相应的缓冲区类,Java网络编程从入门到精通(33):非阻塞I/O的缓冲区(Buffer)(3),在wrap方法中的array参数是要转换的数组(如果是其他的缓冲区类,数组的类型就是相应的简单类型,除了可以将数组转换成缓冲

其他五个缓冲区类中的wrap 方法定义和上面的定义类似,只是返回值的类型是相应的缓冲区类。

在wrap方法中的array参数是要转换的数组(如果是其他的缓冲区类,数组的类型就是相应的简单类型,如IntBuffer类中的wrap方法的array就是int[]类型)。offset是要转换的子数组的偏移量,也就是子数组在array中的开始索引。length是要转换的子数组的长度。利用后两个参数可以将array数组中的一部分转换成缓冲区对象。它们的使用方法如下:

byte[] myByte = new byte[] { 1, 2, 3 };
int[] myInt = new int[] { 1, 2, 3, 4 };
ByteBuffer byteBuffer = ByteBuffer.wrap(myByte);
IntBuffer intBuffer = IntBuffer.wrap(myInt, 1, 2);

可以通过缓冲区类的capacity方法来得到缓冲区的大小。capacity方法的定义如下:

public final int capacity()

如果使用allocate方法来创建缓冲区,capacity方法的返回值就是capacity参数的值。而使用wrap方法来创建缓冲区,capacity方法的返回值是array数组的长度,但要注意,使用wrap来转换array的字数组时,capacity的长度仍然是原数组的长度,如上面代码中的intBuffer缓冲区的capacity值是4,而不是2。

除了可以将数组转换成缓冲区外,也可以通过缓冲区类的array方法将缓冲区转换成相应类型的数组。IntBuffer类的array方法的定义方法如下(其他缓冲区类的array的定义类似):

public final int[] array()

下面的代码演示了如何使用array方法将缓冲区转换成相应类型的数组。

int[] myInt = new int[] { 1, 2, 3, 4, 5, 6 };
IntBuffer intBuffer = IntBuffer.wrap(myInt, 1, 3);
for (int v : intBuffer.array())
    System.out.print(v + " ");

上一页  1 2 3 4 5  下一页

Tags:Java 网络编程 入门

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接