java緩沖區


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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM