work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Java NIO Buffer中各种状态属性的含义

Posted on 2019-08-11 17:10  work hard work smart  阅读(434)  评论(0)    收藏  举报

关于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