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

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

 2009-09-22 00:00:00 来源:WEB开发网   
核心提示: 通过isDirect方法可以判断缓冲区对象(其他的缓冲区类也有isDirect方法,因为,Java网络编程从入门到精通(33):非阻塞I/O的缓冲区(Buffer)(5),ByteBuffer对象可以转换成其他的缓冲区对象,这部分内容将在后面讲解)是用哪种方式创建的,CharBuffer类的wr

通过isDirect方法可以判断缓冲区对象(其他的缓冲区类也有isDirect方法,因为,ByteBuffer对象可以转换成其他的缓冲区对象,这部分内容将在后面讲解)是用哪种方式创建的,如果isDirect方法返回true,则这个缓冲区对象是用allocateDirect方法创建的,否则,就是用其他方法创建的缓冲区对象。

l         CharBuffer类

我们可以发现,上述的七种缓冲区中并没有字符串缓冲区,而字符串在程序中却是最常用的一种数据类型。不过不要担心,虽然java.nio包中并未提供字符串缓冲区,但却可以将字符串转换成字符缓冲区(就是CharBuffer对象)。在CharBuffer类中的wrap方法除了上述的两种重载形式外,又多了两种重载形式,它们的定义如下:

public static CharBuffer wrap(CharSequence csq)
public static CharBuffer wrap(CharSequence csq, int start, int end)

其中csq参数表示要转换的字符串,但我们注意到csq的类型并不是String,而是CharSequence。CharSequence类Java中四个可以表示字符串的类的父类,这四个类是String、StringBuffer、StringBuilder和CharBuffer(大家要注意,StringBuffer和本节讲的缓冲区类一点关系都没有,这个类在java.lang包中)。也就是说,CharBuffer类的wrap方法可以将这四个类的对象转换成CharBuffer对象。

另外两个参数start和end分别是子字符串的开始索引和结束索引的下一个位置,如将字符串"1234"中的"23" 转换成CharBuffer对象的语句如下:

CharBuffer cb = CharBuffer.wrap("1234", 1, 3);

下面的代码演示了如何使用wrap方法将不同形式的字符串转换成CharBuffer对象。

StringBuffer stringBuffer = new StringBuffer("通过StringBuffer创建CharBuffer对象");
StringBuilder stringBuilder = new StringBuilder("通过StringBuilder创建CharBuffer对象");
CharBuffer charBuffer1 = CharBuffer.wrap("通过String创建CharBuffer对象");
CharBuffer charBuffer2 = CharBuffer.wrap(stringBuffer);
CharBuffer charBuffer3 = CharBuffer.wrap(stringBuilder);
CharBuffer charBuffer4 = CharBuffer.wrap(charBuffer1, 1, 3);

上一页  1 2 3 4 5 

Tags:Java 网络编程 入门

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