Buffer没有构造函数,只能通过static XxxBuffer allocate(int capacity) 来创建一个容量为capacity的XxxBuffer.
package com.ivy.nio; import java.nio.CharBuffer; public class BufferDemo { public static void main(String[] args) { // TODO Auto-generated method stub CharBuffer buffer = CharBuffer.allocate(8); System.out.println("capacity:" + buffer.capacity()); System.out.println("limit:" + buffer.limit()); System.out.println("position:" + buffer.position()); buffer.put("a"); buffer.put("b"); buffer.put("c"); System.out.println("after adding three elements -------"); System.out.println("position:" + buffer.position()); buffer.flip(); System.out.println("after flip -------"); System.out.println("position:" + buffer.position()); System.out.println("position(0):" + buffer.get()); System.out.println("position:" + buffer.position()); buffer.clear(); System.out.println("after clear -------"); System.out.println("limit:" + buffer.limit()); System.out.println("position:" + buffer.position()); System.out.println("position(2):" + buffer.get(2)); System.out.println("position:" + buffer.position()); } }
三个重要概念,容量,界限,位置:
当Buffer装入数据解暑后,调用Buffer的flip方法,该方法将limit设置为position所在的位置,将position设为0,这样buffer就为输出数据做好了准备;当Buffer输出数据结束后,Buffer调用clear方法,它并不是清空数据,仅仅将position位置置为0,将limit置为capacity,这样为再次向Buffer中装入数据做好准备。
原文:http://www.cnblogs.com/IvySue/p/6404329.html