基于IntBuffer类的基本用法(详解)

废话不多说,直接上代码

package com.ietree.basicskill.socket.basic.nio;

import java.nio.IntBuffer;

/**
 * Created by Administrator on 2017/5/25.
 */
public class BufferTest {
  public static void main(String[] args) {
     // 1 基本操作
     /*//创建指定长度的缓冲区
     IntBuffer buf = IntBuffer.allocate(10);
     buf.put(13);// position位置:0 - > 1
     buf.put(21);// position位置:1 - > 2
     buf.put(35);// position位置:2 - > 3
     //把位置复位为0,也就是position位置:3 - > 0
     buf.flip();
     System.out.println("使用flip复位:" + buf);
     System.out.println("容量为: " + buf.capacity());  //容量一旦初始化后不允许改变(warp方法包裹数组除外)
     System.out.println("限制为: " + buf.limit());    //由于只装载了三个元素,所以可读取或者操作的元素为3 则limit=3

     System.out.println("获取下标为1的元素:" + buf.get(1));
     System.out.println("get(index)方法,position位置不改变:" + buf);
     buf.put(1, 4);
     System.out.println("put(index, change)方法,position位置不变:" + buf);;

     for (int i = 0; i < buf.limit(); i++) {
       //调用get方法会使其缓冲区位置(position)向后递增一位
       System.out.print(buf.get() + "\t");
     }
     System.out.println("buf对象遍历之后为: " + buf);*/

     // 2 wrap方法使用
     // wrap方法会包裹一个数组: 一般这种用法不会先初始化缓存对象的长度,因为没有意义,最后还会被wrap所包裹的数组覆盖掉。
     // 并且wrap方法修改缓冲区对象的时候,数组本身也会跟着发生变化。
     /*int[] arr = new int[]{1,2,5};
     IntBuffer buf1 = IntBuffer.wrap(arr);
     System.out.println(buf1);

     IntBuffer buf2 = IntBuffer.wrap(arr, 0 , 2);
     //这样使用表示容量为数组arr的长度,但是可操作的元素只有实际进入缓存区的元素长度
     System.out.println(buf2);*/

     // 3 其他方法
     IntBuffer buf1 = IntBuffer.allocate(10);
     int[] arr = new int[]{1,2,5};
     buf1.put(arr);
     System.out.println(buf1);
     //一种复制方法
     IntBuffer buf3 = buf1.duplicate();
     System.out.println(buf3);

     //设置buf1的位置属性
     //buf1.position(0);
     buf1.flip();
     System.out.println(buf1);

     System.out.println("可读数据为:" + buf1.remaining());

     int[] arr2 = new int[buf1.remaining()];
     //将缓冲区数据放入arr2数组中去
     buf1.get(arr2);
     for(int i : arr2){
      System.out.print(Integer.toString(i) + ",");
     }

  }
}

以上这篇基于IntBuffer类的基本用法(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java stringbuffer的用法示例

    特点:长度是可变化的(底层实际是不断的new数组)可以直接操作多个数据类型最终会通过toString方法变成字符串可以对字符串进行修改线程是同步的 与数组之间的区别: StringBuffer:长度是可变的,可以存储不同类型的数据 数组:长度不可变,只能存储一种数据类型 StringBuffer功能: 存储(create) StringBuffer append():将指定的数据作为参数添加到已有数据结尾处(除了byte和short类型的数据没有以外其他数据类型都有都可以) StringBuff

  • 基于IntBuffer类的基本用法(详解)

    废话不多说,直接上代码 package com.ietree.basicskill.socket.basic.nio; import java.nio.IntBuffer; /** * Created by Administrator on 2017/5/25. */ public class BufferTest { public static void main(String[] args) { // 1 基本操作 /*//创建指定长度的缓冲区 IntBuffer buf = IntBuff

  • 基于C++中setiosflags()的用法详解

    cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(2); setiosflags 是包含在命名空间iomanip 中的C++ 操作符,该操作符的作用是执行由有参数指定区域内的动作:   iso::fixed 是操作符setiosflags 的参数之一,该参数指定的动作是以带小数点的形式表示浮点数,并且在允许的精度范围内尽可能的把数字移向小数点右侧:   iso::right 也是se

  • 基于laravel缓冲cache的用法详解

    一.在控制器中引用: use cache; 二.基本方法及使用 1.put() 键 值 有效时间(分钟) Cache::put('key1','val1',10); 2.add() 若key2不存在,则添加成功 否则,添加失败 Cache::add('key2','val2',20); 3.forever() 永久保存对象到缓存 Cache::forever('key3','val3'); 4.has() 判断是否存在 Cache::has('key1'); 5.get() 取值 Cache::

  • 基于php split()函数的用法详解

    PHP函数split()的基本语法为:array split ( string $pattern, string $string [, int $limit] ).我们向大家举了两个例子来具体讲解这个函数的使用方法. 对于初学者来说,掌握PHP中常用函数的用法,是其继续学习的基础.今天我们就为大家详细介绍有关PHP函数split()的一些使用方法,希望大家能通过这篇文章介绍的内容增加自己的知识库.说明array split ( string $pattern, string $string [,

  • PHP封装的多文件上传类实例与用法详解

    本文实例讲述了PHP封装的多文件上传类实例与用法.分享给大家供大家参考,具体如下: <?php /**//* * @(#)UploadFile.php * * 可同时处理用户多个上传文件.效验文件有效性后存储至指定目录. * 可返回上传文件的相关有用信息供其它程序使用.(如文件名.类型.大小.保存路径) * 使用方法请见本类底部(UploadFile类使用注释)信息. * */ class UploadFile { var $user_post_file = array(); //用户上传的文件

  • Python面向对象程序设计类的多态用法详解

    本文实例讲述了Python面向对象程序设计类的多态用法.分享给大家供大家参考,具体如下: 多态 1.多态使用 一种事物的多种体现形式,举例:动物有很多种 注意: 继承是多态的前提 函数重写就是多态的体现形式 演示:重写Animal类 第一步:先定义猫类和老鼠类,继承自object,在其中书写构造方法和eat方法 第二步: 抽取Animal父类,定义属性和eat方法,猫类与老鼠类继承即可 第三步: 定义人类,在其中分别定义喂猫和喂老鼠的方法 第四步:使用多态,将多个喂的方法提取一个. # 测试类

  • C#基于SerialPort类实现串口通讯详解

    本文实例为大家分享了C#基于SerialPort类实现串口通讯的具体代码,供大家参考,具体内容如下 最终效果 窗体设置: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; usi

  • 基于PHP常用函数的用法详解

    复制代码 代码如下: <?php//===============================时间日期===============================//y返回年最后两位,Y年四位数,m月份数字,M月份英文.d月份几号数字,D星期几英文$date=date("Y-m-d");$date=date("Y-m-d H:i:s");//带时分秒 //include,include_once.require,require_once//require

  • Java Objects工具类原理及用法详解

    Objects工具类 jdk 1.7引进的工具类,都是静态调用的方法,jdk 1.8新增了部分方法 重点方法 equals 用于字符串和包装对象的比较,先比较内存地址,再比较值 deepEquals 数组的比较,先比较内存地址,再比较值,如String.char.byte.int数组,或者包装类型Integer等数组 hashCode 返回对象的hashCode,若传入的为null,则返回0 hash 传入可变参数的所有值得hashCode的总和,底层用Arrays.hashCode 可变参数

  • java 三角形类 Triangle的用法详解

    三角形类Triangle 设计一个名为 Triangle 的类来扩展 GeometricObject 类.该类包括: 1.三个名为 side1,side2,side3 的double 数据域表示这个三角形的三条边,它们的默认值是1.0. 2.一个无参构造方法创建的默认的三角形 3.一个能创建带指定side1,side2,side3的三角形的构造方法 4.所有三个数据域的访问器方法 5.一个名为getArea()的方法返回这个三角形的面积 6.一个名为getPerimeter()的方法返回这个三角

随机推荐