buffer 的解释

 

你可以用put方法写入一些数据到Buffer中:
  // Writing on a buffer
  IntBuffer buffer = IntBuffer.allocate(10);
  for (int i=0; i < buffer.capacity(); i++) {
  buffer.put(i);
  }
  
  这段代码创建了一个包含10个整型值的Buffer,然后将数字0到9放入到Buffer中。同时你可以看到,我使用了capacity方法来获得Buffer的容量。
  要想读取Buffer的内容,你可以用如下方法来处理:
  
  // Reading from a buffer
  buffer.position(0);
  while (buffer.hasRemaining()) {
  int i = buffer.get();
  System.out.println("i="+i);
  }
  
  调用position方法,你能设置当前位置为0;即Bufferr的起始位置。当在当前位置和limit值之间有元素时,hasRemaining方法返回true;直到超出这个范围,此方法将返回flase。while循环中的代码调用get方法读取各项,并同时显示在控制台上。
  
  理解Buffer的limit和capacity这两个值之间的区别是十分重要的。Capacity是某个Buffer对象所能包含的项数的最大值。Limit是在0到capacity之间的一个值,它表示一个限度,可以使用limit或者flip方法来设置它。我们来看下面的例子:
  // Sample of using flip
  buffer.position(5);
  buffer.flip();
  while (buffer.hasRemaining()) {
  int i = buffer.get();
  System.out.println("i="+i);
  }
  
  
  当前位置被position方法设置成5。Flip方法进行如下操作:先将设置limit为当前位置的值,即5;然后再设置当前位置的值为0。因此,此后的while循环就只能扫描到前5个元素了,因为flip方法设置了新的limit值,即为5。从而,数字0,1,2,3,4将被显示出来。
  
  另一个重要的Buffer类的方法是clear,它将设置position为0并设置limit为Buffer的容量值。基本上,clear方法消除这之前flip(或limit)方法产生的影响。考虑下例:
  // Sample of using clear
  buffer.clear();
  while (buffer.hasRemaining()) {
  int i = buffer.get();
  System.out.println("i="+i);
  }
  
  这段代码将显示数字0到9,而与Buffer的当前位置和limit值无关。

本文来自联城技术网(http://tech.16c.cn/)转发请保留地址:http://tech.16c.cn/java/hexin/20100818/50603_2.html

你可能感兴趣的:(buffer,2010)