zoukankan      html  css  js  c++  java
  • JavaSE:NIO

    1.  常用方法

        拿到一个缓冲区,我们往往会做什么?

        很简单,就是读取缓冲区的数据 / 写数据到缓冲区中

        所以,缓冲区的核心方法是:

            put(byte b):给数组添加元素

                get():获取一个元素

    import java.nio.ByteBuffer;
    import java.util.Arrays;
    
    public class Demo02Buffer的方法 {
    
        public static void main(String[] args) {
            
            // 创建对象
            ByteBuffer buffer = ByteBuffer.allocate(10);
    
            // put(byte b): 给数组添加元素
            buffer.put ((byte)10);
            buffer.put ((byte)20);
            buffer.put ((byte)30);
    
            // 把缓冲数组,变成普通数组
            byte[] arr = buffer.array();
    
            // 打印
            System.out.print(Arrays.toString(arr));
    
            // get(): 获取一个元素
            byte b = buffer.get(1);
            System.out.print(b);    //    20    
        }
    }

    2.  Buffer类中的变量

        Buffer类维护了 4 个核心变量属性,来提供关于其所包含的数组的信息。 它们是:

          <1> 容量Capacity

              缓冲区能够容纳的数据元素的最大数量

              容量在缓冲区创建时被设定,并且永远不能改变

              (不能被改变的原因也很简单,底层是数组嘛)

          <2> 界限Limit

              缓冲区中,可以操作数据的大小

              代表了当前缓冲区中,一共有多少数据

              (从limit开始,后面的位置不能操作)

          <3>位置Position 

              下一个要被读或写的元素的位置

              Position会自动由相应的get() 和 put() 函数更新

          

    以上三个属性之间,有一些相对的大小关系:

      0 <= position <= limit <= capacity

    例:

      如果我们创建一个新的容量大小为20 的ByteBuffer对象, 在初始化的时候, position 设置为 0,

            limit 和 capacity 被设置为 10, 在以后使用 ByteBuffer对象过程中, capacity的值不会再发生变化,而其他的两个将会随着使用而变化

          <4>标记Mark

              一个备忘位置。 用于记录上一次读写的位置 

  • 相关阅读:
    Springboot中enable注解
    java消息队列--ActiveMQ,RabbitMQ入门
    java中的静态和动态代理Proxy
    java源码中的注解
    java中jdbc源码解读
    sql脚本练习
    spring boot中的jave注解学习
    thymeleaf入门和学习
    职场经验:互联网公司有哪些“潜规则”?职场萌新一定要注意了!
    C/C++编程笔记:C语言错误处理方法!如何更好地处理程序的错误?
  • 原文地址:https://www.cnblogs.com/JasperZhao/p/14954647.html
Copyright © 2011-2022 走看看