在I/O-> New IO ->Buffer details 一节中,作者示例了下面一段代码
import java.nio.*;
import static net.mindview.util.Print.*;
public class UsingBuffers {
  private static void symmetricScramble(CharBuffer buffer){
    while(buffer.hasRemaining()) {
      buffer.();
      char c1 = buffer.get();
      char c2 = buffer.get();
      buffer.reset();
      buffer.put(c2).put(c1);
   }
  }
public static void main(String[] args) {
   char[] data = "UsingBuffers".toCharArray();
   ByteBuffer bb = ByteBuffer.allocate(data.length * 2);
    CharBuffer cb = bb.asCharBuffer();
   cb.put(data);
   print(cb.rewind());
   symmetricScramble(cb);
   print(cb.rewind());
   symmetricScramble(cb);
   print(cb.rewind());
  }
}
该段代码中symmetricScramble方法有bug,作者使用的数组data的length为偶数12,若length为单数,那么在symmetricScramble方法的循环体中,在最后一次循环中的char c2 = buffer.get();会出现BufferUnderflowException,因为已经没有内容可以读取