ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaSE:NIO - 缓冲区的常用方法 & Buffer中的变量(一)

2021-06-30 15:35:30  阅读:174  来源: 互联网

标签:NIO Buffer 数组 put buffer ByteBuffer 缓冲区 JavaSE byte


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

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

标签:NIO,Buffer,数组,put,buffer,ByteBuffer,缓冲区,JavaSE,byte
来源: https://www.cnblogs.com/JasperZhao/p/14954647.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有