关于NIO Buffer中的3个重要状态属性的含义: postion, limit与capacity。
public class NioTest { public static void main(String[] args) { IntBuffer buffer = IntBuffer.allocate(10); System.out.println("capacity:" + buffer.capacity()); for(int i = 0 ; i < 5; i++){ int randomNumber = new SecureRandom().nextInt(20); buffer.put(randomNumber); } System.out.println("before flip limit: " + buffer.limit()); buffer.flip(); System.out.println("after flip limit: " + buffer.limit()); while (buffer.hasRemaining()){ System.out.println("position: " + buffer.position()); System.out.println("limit: " + buffer.limit()); System.out.println("capacity: " + buffer.capacity()); System.out.println(buffer.get()); } } }
输出结果:
capacity:10 before flip limit: 10 after flip limit: 5 position: 0 limit: 5 capacity: 10 7 position: 1 limit: 5 capacity: 10 14 position: 2 limit: 5 capacity: 10 11 position: 3 limit: 5 capacity: 10 14 position: 4 limit: 5 capacity: 10 0