首页 > 编程语言 > 详细

java缓冲区

时间:2015-11-24 21:14:14      阅读:386      评论:0      收藏:0      [点我收藏+]

1:概述 

  Java提供了七个基本的缓冲区,分别由七个类来管理它们都可以在java.nio包中找到。这七个类如下所示:

  ByteBuffer

  ShortBuffer

  IntBuffer

  CharBuffer

  FloatBuffer

  DoubleBuffer

  LongBuffer

  st1":*{behavior:url(#ieooui) }

  1. 通过静态方法allocate来创建缓冲区。

  这七类都有一个静态的allocate方法,通过这个方法可以创建有最大容量限制的缓冲区对象。allocate的定义如下:

  ByteBuffer类中的allocate方法:

  public static ByteBuffer allocate(int capacity)

  IntBuffer类中的allocate方法:

  public static IntBuffer allocate(int capacity)

  其他五个缓冲区类中的allocate 方法定义和上面的定义类似,只是返回值的类型是相应的缓冲区类。

  allocate方法有一个参数capacity,用来指定缓冲区容量的最大值 . capacity的不能小于0,否则会抛出一个IllegalArgumentException异常 , 1024*1024(1M)

2:通过静态方法allocate来创建缓冲区 

  allocate的使用方法如下:

  ByteBuffer byteBuffer = ByteBuffer.allocate(1024);

  IntBuffer intBuffer = IntBuffer.allocate(1024);

3:通过静态方法wrap来创建缓冲区。

 wrap方法可以利用已经存在的数据来创建缓冲区

  它们的使用方法如下:

  byte[] myByte = new byte[] { 1, 2, 3 };

  int[] myInt = new int[] { 1, 2, 3, 4 };

  ByteBuffer byteBuffer = ByteBuffer.wrap(myByte);

  IntBuffer intBuffer = IntBuffer.wrap(myInt, 1, 2);

技术分享

 补:

  wrap(byte[] array) 技术分享技术分享这个缓冲区的数据会存放在byte数组中,bytes数组或buff缓冲区任何一方中数据的改动都会影响另一方。其实ByteBuffer底层本来就有一个bytes数组负责来保存buffer缓冲区中的数据,通过allocate方法系统会帮你构造一个byte数组

  wrap(byte[] array,  int offset, int length) 在上一个方法的基础上可以指定偏移量和长度,这个offset也就是包装后byteBuffer的position,而length呢就是limit-position的大小,从而我们可以得到limit的位置为length+position(offset)

java缓冲区

原文:http://www.cnblogs.com/fring/p/4992754.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!