日期:2014-05-20  浏览次数:20651 次

java.nio包中一个关于字节缓冲区的问题
最近学习java.nio包中的字节缓冲区 随便写了一个简单的代码 

import java.nio.*;

public class BufferTest 
{

  public static void main(String args[])
  {
   
  CharBuffer buffer=CharBuffer.allocate(32);
   
  String str="helloworld";
  char echo[]=str.toCharArray();
  buffer.wrap(echo);
   
  System.out.println(buffer.toString());
   
   
  }
   
   
}
程序为什么输出的是 框框?? 想把字符缓冲区中的数据一个一个输出 应该怎么做??

------解决方案--------------------
buffer.wrap(echo);
wrap()为static方法,使用时应类名加上方法名CharBuffer.wrap(cheo),由于返回CharBuffer
代码应该修改为:buffer = CharBuffer.wrap(echo);
------解决方案--------------------
因为buffer中没有内容,而在初始化的时候指定了buffer的长度为32,所以输出了32个空格。

CharBuffer buffer=CharBuffer.allocate(32); //去掉
String str="helloworld";
char echo[]=str.toCharArray();
buffer.wrap(echo); //wrap()静态方法-> CharBuffer buffer = CharBuffer.wrap(echo);
System.out.println(buffer.toString());

------解决方案--------------------
CharBuffer charBuffer = CharBuffer.allocate(23);
charBuffer.put("sa".toCharArray());
charBuffer.put("sa".toCharArray());
System.out.println(charBuffer.array());