|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.nio.Buffer java.nio.DoubleBuffer
public abstract class DoubleBuffer
double 緩衝區。
此類別定義了 double 緩衝區上的四類別操作:
將此緩衝區的連續 double 序列傳輸到陣列中的相對批量 get
方法;
將 double 陣列或其他 double 緩衝區中的連續 double 序列傳輸到此緩衝區的相對批量 put
方法;以及
double 緩衝區的 compacting
、
duplicating
和
#slice
slicing 方法。
double 緩衝區可以通過 allocation
創建,此方法通過
wrapping
將一個現有 double 陣列包裹到緩衝區中來為緩衝區內容分派空間,或者通過創建現有位元組緩衝區的視圖來創建。
像位元組緩衝區一樣,double 緩衝區要麼是直接的,要麼是非直接的。通過此類別的 wrap 方法創建的 double 緩衝區將是非直接的。當且僅當位元組緩衝區本身為直接時,作為位元組緩衝區的視圖創建的 double 緩衝區才是直接的。通過調用 isDirect
方法可以確定 double 緩衝區是否為直接的。
指定此類別中的方法(它們不返回其他值),以返回這些方法被調用時所在的緩衝區。這允許對方法調用進行連接。
方法摘要 | |
---|---|
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 |
方法詳細資訊 |
---|
public static DoubleBuffer allocate(int capacity)
新緩衝區的位置將為零,其界限將為其容量,其標記是未定義的。它將具有一個底層實作陣列
,且其
陣列偏移量
將為零。
capacity
- 新緩衝區的容量,以 double 為單位
IllegalArgumentException
- 如果 capacity 為負整數public static DoubleBuffer wrap(double[] array, int offset, int length)
新緩衝區將受給定 double 陣列的支持;即緩衝區修改將導致陣列修改,反之亦然。新緩衝區的容量將為 array.length,其位置將為 offset,其界限將為 offset + length,其標記是未定義的。其底層實作陣列
將為給定陣列,並且其
陣列偏移量
將為零。
array
- 支持新緩衝區的陣列offset
- 要使用的子陣列的偏移量;必須為非負且不大於 array.length。將新緩衝區的位置設置為此值。length
- 要使用的子陣列的長度;必須為非負且不大於 array.length - offset。將新緩衝區的界限設置為 offset + length。
IndexOutOfBoundsException
- 如果關於 offset 和 length 參數的前提不成立public static DoubleBuffer wrap(double[] array)
新緩衝區將受給定 double 陣列的支持;即緩衝區修改將導致陣列修改,反之亦然。新緩衝區的容量和界限將為 array.length,其位置將為零,其標記是未定義的。其底層實作陣列
將為給定陣列,並且其
陣列偏移量
將為零。
array
- 實作此緩衝區的陣列
public abstract DoubleBuffer slice()
新緩衝區的內容將從此緩衝區的當前位置開始。此緩衝區內容的更改在新緩衝區中是可見的,反之亦然;這兩個緩衝區的位置、界限和標記值是相互獨立的。
新緩衝區的位置將為零,其容量和界限將為此緩衝區中所剩餘的 double 數量,其標記是未定義的。當且僅當此緩衝區為直接時,新緩衝區才是直接的,並且當且僅當此緩衝區為只讀時,新緩衝區才是只讀的。
public abstract DoubleBuffer duplicate()
新緩衝區的內容將為此緩衝區的內容。此緩衝區內容的更改在新緩衝區中是可見的,反之亦然;這兩個緩衝區的位置、界限和標記值是相互獨立的。
新緩衝區的容量、界限、位置和標記值將與此緩衝區相同。當且僅當此緩衝區為直接時,新緩衝區才是直接的,當且僅當此緩衝區為只讀時,新緩衝區才是只讀的。
public abstract DoubleBuffer asReadOnlyBuffer()
新緩衝區的內容將為此緩衝區的內容。此緩衝區內容的更改在新緩衝區中是可見的,但新緩衝區將是只讀的並且不允許修改共享內容。兩個緩衝區的位置、界限和標記值是相互獨立的。
新緩衝區的容量、界限、位置和標記值將與此緩衝區相同。
如果此緩衝區本身是只讀的,則此方法與 duplicate
方法完全相同。
public abstract double get()
BufferUnderflowException
- 如果緩衝區當前位置不小於其界限public abstract DoubleBuffer put(double d)
將給定 double 寫入此緩衝區的當前位置,然後將位置遞增。
d
- 要寫入的 double。
BufferOverflowException
- 如果此緩衝區的當前位置不小於界限
ReadOnlyBufferException
- 如果此緩衝區是只讀的public abstract double get(int index)
index
- 將讀取 double 的位置的索引
IndexOutOfBoundsException
- 如果 index 為負或不小於緩衝區界限public abstract DoubleBuffer put(int index, double d)
將給定 double 寫入此緩衝區的給定索引處。
index
- 將在該位置寫入 doubled
- 要寫入的 double 值
IndexOutOfBoundsException
- 如果 index 為負或不小於緩衝區界限
ReadOnlyBufferException
- 如果此緩衝區是只讀的public DoubleBuffer get(double[] dst, int offset, int length)
此方法將此緩衝區的 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.lengthlength
- 要寫入給定陣列中的 double 的最大數量;必須為非負且不大於 dst.length - offset
BufferUnderflowException
- 如果此緩衝區中的剩餘 double 少於 length
IndexOutOfBoundsException
- 如果關於 offset 和 length 參數的前提不成立public DoubleBuffer get(double[] dst)
此方法將此緩衝區的 double 傳輸到給定的目標陣列中。對此方法的調用形式為 src.get(a),該調用與以下調用完全相同:
src.get(a, 0, a.length)
BufferUnderflowException
- 如果此緩衝區中的剩餘 double 少於 lengthpublic DoubleBuffer put(DoubleBuffer src)
此方法將給定源緩衝區中的剩餘 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
- 如果此緩衝區是只讀的public DoubleBuffer put(double[] src, int offset, int length)
此方法將給定源陣列中的 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.lengthlength
- 要從給定陣列讀取的 double 數量;必須為非負且不大於 array.length - offset
BufferOverflowException
- 如果此緩衝區沒有足夠空間
IndexOutOfBoundsException
- 如果關於 offset 和 length 參數的前提不成立
ReadOnlyBufferException
- 如果此緩衝區是只讀的public final DoubleBuffer put(double[] src)
此方法將給定源 double 陣列中的所有內容傳輸到此緩衝區中。調用此方法的形式為 dst.put(a),該調用與以下調用完全相同:
dst.put(a, 0, a.length)
BufferOverflowException
- 如果此緩衝區沒有足夠空間
ReadOnlyBufferException
- 如果此緩衝區是只讀的public final boolean hasArray()
如果此方法返回 true,則可以安全地調用 array
和 arrayOffset
方法。
Buffer
中的 hasArray
public final double[] array()
此緩衝區的內容修改將導致返回的陣列內容修改,反之亦然。
調用此方法之前要調用 hasArray
方法,以確保此緩衝區具有可存取的底層實作陣列。
Buffer
中的 array
ReadOnlyBufferException
- 如果存在實作此緩衝區的陣列,但緩衝區是只讀的
UnsupportedOperationException
- 如果不存在某個可存取的陣列實作此緩衝區public final int arrayOffset()
如果存在實作此緩衝區的陣列,則緩衝區位置 p 對應於陣列索引 p + arrayOffset()。
調用此方法之前要調用 hasArray
方法,以確保此緩衝區具有可存取的底層實作陣列。
Buffer
中的 arrayOffset
ReadOnlyBufferException
- 如果存在實作此緩衝區的陣列,但緩衝區是只讀的
UnsupportedOperationException
- 如果不存在某個可存取的陣列實作此緩衝區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
- 如果此緩衝區是只讀的public abstract boolean isDirect()
Buffer
中的 isDirect
public String toString()
Object
中的 toString
public int hashCode()
double 緩衝區的雜湊碼只取決於其剩餘元素;即取決於從 position() 開始一直到(包括)limit() - 1 處的元素。
因為緩衝區雜湊碼與內容有關,因此建議不要在雜湊映射或類似資料結構中將緩衝區用作鍵,除非知道它們的內容不會發生更改。
Object
中的 hashCode
Object.equals(java.lang.Object)
,
Hashtable
public boolean equals(Object ob)
兩個 double 緩衝區是相同的,當且僅當:
它們具有相同的元素型別,
它們具有相同數量的剩餘元素,並且
兩個剩餘元素序列(與它們的起始位置無關)逐點相同。
double 緩衝區與任何其他型別的物件都不同的。
Object
中的 equals
ob
- 此緩衝區要比較的物件
Object.hashCode()
,
Hashtable
public int compareTo(DoubleBuffer that)
比較兩個 double 緩衝區的方法是按字典順序比較它們的剩餘元素序列,而不考慮每個序列在其對應緩衝區中的起始位置。
double 緩衝區不能與任何其他型別的物件進行比較。
Comparable<DoubleBuffer>
中的 compareTo
that
- 要比較的物件。
public abstract ByteOrder order()
通過分派或通過包裹現有 double 陣列而創建的 double 緩衝區的位元組順序是底層硬體的本機順序
。作為位元組緩衝區的視圖而創建的 double 緩衝區的位元組順序是創建視圖時位元組緩衝區的位元組順序。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。