JavaTM 2 Platform
Standard Ed. 6

java.nio
類別 DoubleBuffer

java.lang.Object
  繼承者 java.nio.Buffer
      繼承者 java.nio.DoubleBuffer
所有已實作的介面:
Comparable<DoubleBuffer>

public abstract class DoubleBuffer
extends Buffer
implements Comparable<DoubleBuffer>

double 緩衝區。

此類別定義了 double 緩衝區上的四類別操作:

double 緩衝區可以通過 allocation 創建,此方法通過 wrapping 將一個現有 double 陣列包裹到緩衝區中來為緩衝區內容分派空間,或者通過創建現有位元組緩衝區的視圖來創建。

像位元組緩衝區一樣,double 緩衝區要麼是直接的,要麼是非直接的。通過此類別的 wrap 方法創建的 double 緩衝區將是非直接的。當且僅當位元組緩衝區本身為直接時,作為位元組緩衝區的視圖創建的 double 緩衝區才是直接的。通過調用 isDirect 方法可以確定 double 緩衝區是否為直接的。

指定此類別中的方法(它們不返回其他值),以返回這些方法被調用時所在的緩衝區。這允許對方法調用進行連接。

從以下版本開始:
1.4

方法摘要
static DoubleBuffer allocate(int capacity)
          分派新的 double 緩衝區。
 double[] array()
          返回實作此緩衝區的 double 陣列(可選操作)
 int arrayOffset()
          返回此緩衝區中的第一個 double 元素在緩衝區的底層實作陣列中的偏移量(可選操作)
abstract  DoubleBuffer asReadOnlyBuffer()
          創建共享此緩衝區內容的新的只讀 double 緩衝區。
abstract  DoubleBuffer compact()
          壓縮此緩衝區(可選操作)
 int compareTo(DoubleBuffer that)
          將此緩衝區與另一個緩衝區進行比較。
abstract  DoubleBuffer duplicate()
          創建共享此緩衝區內容的新的 double 緩衝區。
 boolean equals(Object ob)
          判斷此緩衝區是否與另一個物件相同。
abstract  double get()
          相對 get 方法。
 DoubleBuffer get(double[] dst)
          相對批量 get 方法。
 DoubleBuffer get(double[] dst, int offset, int length)
          相對批量 get 方法。
abstract  double get(int index)
          絕對 get 方法。
 boolean hasArray()
          判斷是否可通過一個可存取的 double 陣列實作此緩衝區。
 int hashCode()
          返回此緩衝區的當前雜湊碼。
abstract  boolean isDirect()
          判斷此 double 緩衝區是否為直接的。
abstract  ByteOrder order()
          獲取此緩衝區的位元組順序。
abstract  DoubleBuffer put(double d)
          相對 put 方法(可選操作)
 DoubleBuffer put(double[] src)
          相對批量 put 方法(可選操作)
 DoubleBuffer put(double[] src, int offset, int length)
          相對批量 put 方法(可選操作)
 DoubleBuffer put(DoubleBuffer src)
          相對批量 put 方法(可選操作)
abstract  DoubleBuffer put(int index, double d)
          絕對 put 方法(可選操作)
abstract  DoubleBuffer slice()
          創建新的 double 緩衝區,其內容是此緩衝區內容的共享子序列。
 String toString()
          返回總結了此緩衝區狀態的字元串。
static DoubleBuffer wrap(double[] array)
          將 double 陣列包裹到緩衝區中。
static DoubleBuffer wrap(double[] array, int offset, int length)
          將 double 陣列包裹到緩衝區中。
 
從類別 java.nio.Buffer 繼承的方法
capacity, clear, flip, hasRemaining, isReadOnly, limit, limit, mark, position, position, remaining, reset, rewind
 
從類別 java.lang.Object 繼承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

方法詳細資訊

allocate

public static DoubleBuffer allocate(int capacity)
分派新的 double 緩衝區。

新緩衝區的位置將為零,其界限將為其容量,其標記是未定義的。它將具有一個底層實作陣列,且其陣列偏移量將為零。

參數:
capacity - 新緩衝區的容量,以 double 為單位
返回:
新的 double 緩衝區
拋出:
IllegalArgumentException - 如果 capacity 為負整數

wrap

public static DoubleBuffer wrap(double[] array,
                                int offset,
                                int length)
將 double 陣列包裹到緩衝區中。

新緩衝區將受給定 double 陣列的支持;即緩衝區修改將導致陣列修改,反之亦然。新緩衝區的容量將為 array.length,其位置將為 offset,其界限將為 offset + length,其標記是未定義的。其底層實作陣列將為給定陣列,並且其陣列偏移量將為零。

參數:
array - 支持新緩衝區的陣列
offset - 要使用的子陣列的偏移量;必須為非負且不大於 array.length。將新緩衝區的位置設置為此值。
length - 要使用的子陣列的長度;必須為非負且不大於 array.length - offset。將新緩衝區的界限設置為 offset + length
返回:
新的 double 緩衝區
拋出:
IndexOutOfBoundsException - 如果關於 offsetlength 參數的前提不成立

wrap

public static DoubleBuffer wrap(double[] array)
將 double 陣列包裹到緩衝區中。

新緩衝區將受給定 double 陣列的支持;即緩衝區修改將導致陣列修改,反之亦然。新緩衝區的容量和界限將為 array.length,其位置將為零,其標記是未定義的。其底層實作陣列將為給定陣列,並且其陣列偏移量將為零。

參數:
array - 實作此緩衝區的陣列
返回:
新的 double 緩衝區

slice

public abstract DoubleBuffer slice()
創建新的 double 緩衝區,其內容是此緩衝區內容的共享子序列。

新緩衝區的內容將從此緩衝區的當前位置開始。此緩衝區內容的更改在新緩衝區中是可見的,反之亦然;這兩個緩衝區的位置、界限和標記值是相互獨立的。

新緩衝區的位置將為零,其容量和界限將為此緩衝區中所剩餘的 double 數量,其標記是未定義的。當且僅當此緩衝區為直接時,新緩衝區才是直接的,並且當且僅當此緩衝區為只讀時,新緩衝區才是只讀的。

返回:
新的 double 緩衝區

duplicate

public abstract DoubleBuffer duplicate()
創建共享此緩衝區內容的新的 double 緩衝區。

新緩衝區的內容將為此緩衝區的內容。此緩衝區內容的更改在新緩衝區中是可見的,反之亦然;這兩個緩衝區的位置、界限和標記值是相互獨立的。

新緩衝區的容量、界限、位置和標記值將與此緩衝區相同。當且僅當此緩衝區為直接時,新緩衝區才是直接的,當且僅當此緩衝區為只讀時,新緩衝區才是只讀的。

返回:
新的 double 緩衝區

asReadOnlyBuffer

public abstract DoubleBuffer asReadOnlyBuffer()
創建共享此緩衝區內容的新的只讀 double 緩衝區。

新緩衝區的內容將為此緩衝區的內容。此緩衝區內容的更改在新緩衝區中是可見的,但新緩衝區將是只讀的並且不允許修改共享內容。兩個緩衝區的位置、界限和標記值是相互獨立的。

新緩衝區的容量、界限、位置和標記值將與此緩衝區相同。

如果此緩衝區本身是只讀的,則此方法與 duplicate 方法完全相同。

返回:
新的只讀 double 緩衝區

get

public abstract double get()
相對 get 方法。讀取此緩衝區當前位置的 double,然後該位置遞增。

返回:
緩衝區當前位置的 double
拋出:
BufferUnderflowException - 如果緩衝區當前位置不小於其界限

put

public abstract DoubleBuffer put(double d)
相對 put 方法(可選操作)

將給定 double 寫入此緩衝區的當前位置,然後將位置遞增。

參數:
d - 要寫入的 double。
返回:
此緩衝區
拋出:
BufferOverflowException - 如果此緩衝區的當前位置不小於界限
ReadOnlyBufferException - 如果此緩衝區是只讀的

get

public abstract double get(int index)
絕對 get 方法。讀取給定索引處的 double。

參數:
index - 將讀取 double 的位置的索引
返回:
給定索引處的 double
拋出:
IndexOutOfBoundsException - 如果 index 為負或不小於緩衝區界限

put

public abstract DoubleBuffer put(int index,
                                 double d)
絕對 put 方法(可選操作)

將給定 double 寫入此緩衝區的給定索引處。

參數:
index - 將在該位置寫入 double
d - 要寫入的 double 值
返回:
此緩衝區
拋出:
IndexOutOfBoundsException - 如果 index 為負或不小於緩衝區界限
ReadOnlyBufferException - 如果此緩衝區是只讀的

get

public DoubleBuffer get(double[] dst,
                        int offset,
                        int length)
相對批量 get 方法。

此方法將此緩衝區的 double 傳輸到給定的目標陣列中。如果緩衝區中剩餘的 double 少於滿足請求所需的 double,即如果 length > remaining(),則不傳輸 double 並拋出 BufferUnderflowException

否則,此方法將此緩衝區中的 length 個 double 複製到給定陣列中,從此緩衝區的當前位置和陣列中的給定偏移量位置開始複製。然後將此緩衝區的位置遞增 length

換句話說,調用此方法的形式為 src.get(dst, off, len),效果與以下循環語句完全相同:

     for (int i = off; i < off + len; i++)
         dst[i] = src.get(); 
區別在於它首先檢查此緩衝區中是否具有足夠的 double,這樣可能效率更高。

參數:
dst - 寫入 double 的陣列
offset - 要寫入的第一個 double 在陣列中的偏移量;必須為非負且不大於 dst.length
length - 要寫入給定陣列中的 double 的最大數量;必須為非負且不大於 dst.length - offset
返回:
此緩衝區
拋出:
BufferUnderflowException - 如果此緩衝區中的剩餘 double 少於 length
IndexOutOfBoundsException - 如果關於 offsetlength 參數的前提不成立

get

public DoubleBuffer get(double[] dst)
相對批量 get 方法。

此方法將此緩衝區的 double 傳輸到給定的目標陣列中。對此方法的調用形式為 src.get(a),該調用與以下調用完全相同:

     src.get(a, 0, a.length) 

返回:
此緩衝區
拋出:
BufferUnderflowException - 如果此緩衝區中的剩餘 double 少於 length

put

public DoubleBuffer put(DoubleBuffer src)
相對批量 put 方法(可選操作)

此方法將給定源緩衝區中的剩餘 double 傳輸到此緩衝區中。如果源緩衝區中的剩餘 double 多於此緩衝區中的剩餘 double 空間,即 src.remaining() > remaining(),則不傳輸 double 且拋出 BufferOverflowException

否則,此方法將給定緩衝區中的 n = src.remaining() 個 double 複製到此緩衝區中,從每個緩衝區的當前位置開始複製。然後這兩個緩衝區的位置均遞增 n

換句話說,調用此方法的形式為 dst.put(src),效果與以下循環語句完全相同:

     while (src.hasRemaining())
         dst.put(src.get()); 
區別在於它首先檢查此緩衝區中是否具有足夠的空間,這樣可能效率更高。

參數:
src - 要從中讀取 double 的源緩衝區;不能為此緩衝區
返回:
此緩衝區
拋出:
BufferOverflowException - 如果對於源緩衝區中剩餘的 double,此緩衝區沒有足夠空間
IllegalArgumentException - 如果源緩衝區為此緩衝區
ReadOnlyBufferException - 如果此緩衝區是只讀的

put

public DoubleBuffer put(double[] src,
                        int offset,
                        int length)
相對批量 put 方法(可選操作)

此方法將給定源陣列中的 double 傳輸到此緩衝區中。如果要從陣列複製的 double 多於此緩衝區中的剩餘 double,即如果 length > remaining(),則不傳輸 double 且拋出 BufferOverflowException

否則,此方法將給定陣列中的 length 個 double 複製到此緩衝區中,從陣列中給定偏移量位置和此緩衝區的當前位置開始複製。然後此緩衝區的位置遞增 length

換句話說,調用此方法的形式為 dst.put(src, off, len),效果與以下循環語句完全相同:

     for (int i = off; i < off + len; i++)
         dst.put(a[i]); 
區別在於它首先檢查此緩衝區中是否具有足夠的空間,這樣可能效率更高。

參數:
src - 要從中讀取 double 的陣列
offset - 要讀取的第一個 double 在陣列中的偏移量;必須為非負且不大於 array.length
length - 要從給定陣列讀取的 double 數量;必須為非負且不大於 array.length - offset
返回:
此緩衝區
拋出:
BufferOverflowException - 如果此緩衝區沒有足夠空間
IndexOutOfBoundsException - 如果關於 offsetlength 參數的前提不成立
ReadOnlyBufferException - 如果此緩衝區是只讀的

put

public final DoubleBuffer put(double[] src)
相對批量 put 方法(可選操作)

此方法將給定源 double 陣列中的所有內容傳輸到此緩衝區中。調用此方法的形式為 dst.put(a),該調用與以下調用完全相同:

     dst.put(a, 0, a.length) 

返回:
此緩衝區
拋出:
BufferOverflowException - 如果此緩衝區沒有足夠空間
ReadOnlyBufferException - 如果此緩衝區是只讀的

hasArray

public final boolean hasArray()
判斷是否可通過一個可存取的 double 陣列實作此緩衝區。

如果此方法返回 true,則可以安全地調用 arrayarrayOffset 方法。

指定者:
類別 Buffer 中的 hasArray
返回:
當且僅當存在實作此緩衝區的陣列,並且此緩衝區不是只讀緩衝區時,返回 true

array

public final double[] array()
返回實作此緩衝區的 double 陣列(可選操作)

此緩衝區的內容修改將導致返回的陣列內容修改,反之亦然。

調用此方法之前要調用 hasArray 方法,以確保此緩衝區具有可存取的底層實作陣列。

指定者:
類別 Buffer 中的 array
返回:
實作此緩衝區的陣列
拋出:
ReadOnlyBufferException - 如果存在實作此緩衝區的陣列,但緩衝區是只讀的
UnsupportedOperationException - 如果不存在某個可存取的陣列實作此緩衝區

arrayOffset

public final int arrayOffset()
返回此緩衝區中的第一個 double 元素在緩衝區的底層實作陣列中的偏移量(可選操作)

如果存在實作此緩衝區的陣列,則緩衝區位置 p 對應於陣列索引 p + arrayOffset()

調用此方法之前要調用 hasArray 方法,以確保此緩衝區具有可存取的底層實作陣列。

指定者:
類別 Buffer 中的 arrayOffset
返回:
此緩衝區的第一個元素在緩衝區陣列中的偏移量
拋出:
ReadOnlyBufferException - 如果存在實作此緩衝區的陣列,但緩衝區是只讀的
UnsupportedOperationException - 如果不存在某個可存取的陣列實作此緩衝區

compact

public abstract DoubleBuffer compact()
壓縮此緩衝區(可選操作)

將緩衝區當前位置和界限之間的 double(如果有)複製到緩衝區的開始處。即將索引 p = position() 處的 double 複製到索引 0 處,將索引 p + 1 處的 MinimalHTMLWriter.htm.ttx 複製到索引 1 處,依此類別推,直到將索引 limit() - 1 處的 double 複製到索引 n = limit() - 1 - p 處。然後將緩衝區的位置設置為 n+1,並將其界限設置為其容量。如果已定義了標記,則丟棄它。

將緩衝區的位置設置為複製的 double 的數量,而不是零,以便調用此方法後可以緊接著調用另一個相對 put 方法。

返回:
此緩衝區
拋出:
ReadOnlyBufferException - 如果此緩衝區是只讀的

isDirect

public abstract boolean isDirect()
判斷此 double 緩衝區是否為直接的。

指定者:
類別 Buffer 中的 isDirect
返回:
當且僅當此緩衝區為直接時,返回 true

toString

public String toString()
返回總結了此緩衝區狀態的字元串。

覆寫:
類別 Object 中的 toString
返回:
一個總結字元串

hashCode

public int hashCode()
返回此緩衝區的當前雜湊碼。

double 緩衝區的雜湊碼只取決於其剩餘元素;即取決於從 position() 開始一直到(包括)limit() - 1 處的元素。

因為緩衝區雜湊碼與內容有關,因此建議不要在雜湊映射或類似資料結構中將緩衝區用作鍵,除非知道它們的內容不會發生更改。

覆寫:
類別 Object 中的 hashCode
返回:
此緩衝區的當前雜湊碼
另請參見:
Object.equals(java.lang.Object), Hashtable

equals

public boolean equals(Object ob)
判斷此緩衝區是否與另一個物件相同。

兩個 double 緩衝區是相同的,當且僅當:

  1. 它們具有相同的元素型別,

  2. 它們具有相同數量的剩餘元素,並且

  3. 兩個剩餘元素序列(與它們的起始位置無關)逐點相同。

double 緩衝區與任何其他型別的物件都不同的。

覆寫:
類別 Object 中的 equals
參數:
ob - 此緩衝區要比較的物件
返回:
當且僅當此緩衝區與給定物件相同時,返回 true
另請參見:
Object.hashCode(), Hashtable

compareTo

public int compareTo(DoubleBuffer that)
將此緩衝區與另一個緩衝區進行比較。

比較兩個 double 緩衝區的方法是按字典順序比較它們的剩餘元素序列,而不考慮每個序列在其對應緩衝區中的起始位置。

double 緩衝區不能與任何其他型別的物件進行比較。

指定者:
介面 Comparable<DoubleBuffer> 中的 compareTo
參數:
that - 要比較的物件。
返回:
如果此緩衝區小於、等於或大於給定緩衝區,則相應返回負整數、零或正整數

order

public abstract ByteOrder order()
獲取此緩衝區的位元組順序。

通過分派或通過包裹現有 double 陣列而創建的 double 緩衝區的位元組順序是底層硬體的本機順序。作為位元組緩衝區的視圖而創建的 double 緩衝區的位元組順序是創建視圖時位元組緩衝區的位元組順序。

返回:
此緩衝區的位元組順序

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only