java中的ShortBuffer
一、概述
java.lang.Object
java.nio.Buffer
java.nio.ShortBuffer
public abstract class ShortBuffer extends Buffer implements Comparable<ShortBuffer>
short 緩沖區(qū)。
此類定義了 short 緩沖區(qū)上的四類操作:
讀寫單個(gè) short 的絕對(duì)和相對(duì) get 和
put 方法。
將此緩沖區(qū)的連續(xù) short 序列傳輸?shù)綌?shù)組中的相對(duì)批量 get 方法。
將 short 數(shù)組或其它 short 緩沖區(qū)中的連續(xù) short 序列傳輸?shù)酱司彌_區(qū)的相對(duì)批量 put 方法;以及
short 緩沖區(qū)的 compacting、duplicating 和
slicing 方法。
short 緩沖區(qū)能夠通過 allocation 創(chuàng)建。此方法通過
wrapping 將一個(gè)現(xiàn)有 short 數(shù)組包裝到緩沖區(qū)中來為緩沖區(qū)內(nèi)容分配空間,或者通過創(chuàng)建現(xiàn)有字節(jié)緩沖區(qū)的視圖來創(chuàng)建。
像字節(jié)緩沖區(qū)一樣,short 緩沖區(qū)要么是直接的,要么是非直接的。通過此類的
wrap 方法創(chuàng)建的 short 緩沖區(qū)將是非直接的。
當(dāng)且僅當(dāng)字節(jié)緩沖區(qū)本身為直接時(shí),作為字節(jié)緩沖區(qū)的視圖創(chuàng)建的 short 緩沖區(qū)才是直接的。通過調(diào)用
isDirect 方法能夠確定 short 緩沖區(qū)是否為直接的。
指定此類中的方法(它們不返回其它值)。以返回這些方法被調(diào)用時(shí)所在的緩沖區(qū)。這同意對(duì)方法調(diào)用進(jìn)行鏈接。
二、概述
1、public static ShortBuffer
allocate(int?capacity)
分配新的 short 緩沖區(qū)。
新緩沖區(qū)的位置將為零,其界限將為其容量。其標(biāo)記是沒有定義的。它將具有一個(gè)底層實(shí)現(xiàn)數(shù)組。且其數(shù)組偏移量將為零。
參數(shù):capacity - 新緩沖區(qū)的容量。以 short 為單位 返回:新的 short 緩沖區(qū) 拋出: IllegalArgumentException - 假設(shè)
capacity 為負(fù)整數(shù)
2、public static ShortBuffer
wrap(short[]?array,? int?offset,int?length)
將 short 數(shù)組包裝到緩沖區(qū)中。
給定的 short 數(shù)組將支持新緩沖區(qū)。即緩沖區(qū)改動(dòng)將導(dǎo)致數(shù)組改動(dòng),反之亦然。新緩沖區(qū)的容量將為 array.length,其位置將為
offset。其界限將為 offset + length,其標(biāo)記是沒有定義的。其底層實(shí)現(xiàn)數(shù)組將為給定數(shù)組,而且其數(shù)組偏移量將為零。
參數(shù):array - 支持新緩沖區(qū)的數(shù)組offset - 要使用的子數(shù)組的偏移量;必須為非負(fù)且不大于 array.length。
將新緩沖區(qū)的位置設(shè)置為此值。
length - 要使用的子數(shù)組的長(zhǎng)度。必須為非負(fù)且不大于 array.length - offset。將新緩沖區(qū)的界限設(shè)置為
offset + length。 返回:新的 short 緩沖區(qū) 拋出: IndexOutOfBoundsException - 假設(shè)關(guān)于
offset 和 length 參數(shù)的前提不成立
3、public static ShortBuffer
wrap(short[]?array)
將 short 數(shù)組包裝到緩沖區(qū)中。
給定的 short 數(shù)組將支持新緩沖區(qū);即緩沖區(qū)改動(dòng)將導(dǎo)致數(shù)組改動(dòng),反之亦然。新緩沖區(qū)的容量和界限將為 array.length。其位置將為零。其標(biāo)記是沒有定義的。其底層實(shí)現(xiàn)數(shù)組將為給定數(shù)組,而且其數(shù)組偏移量將為零。
參數(shù):array - 實(shí)現(xiàn)此緩沖區(qū)的數(shù)組 返回:新的 short 緩沖區(qū)
4、public abstract ShortBuffer
slice()
創(chuàng)建新的 short 緩沖區(qū)。其內(nèi)容是此緩沖區(qū)內(nèi)容的共享子序列。
新緩沖區(qū)的內(nèi)容將從此緩沖區(qū)的當(dāng)前位置開始。此緩沖區(qū)內(nèi)容的更改在新緩沖區(qū)中是可見的,反之亦然。這兩個(gè)緩沖區(qū)的位置、界限和標(biāo)記值是相互獨(dú)立的。
新緩沖區(qū)的位置將為零。其容量和界限將為此緩沖區(qū)中所剩余的 short 數(shù)量,其標(biāo)記是沒有定義的。
當(dāng)且僅當(dāng)此緩沖區(qū)為直接時(shí),新緩沖區(qū)才是直接的,當(dāng)且僅當(dāng)此緩沖區(qū)為僅僅讀時(shí),新緩沖區(qū)才是僅僅讀的。
返回:新的 short 緩沖區(qū)
5、public abstract ShortBuffer
duplicate()
創(chuàng)建共享此緩沖區(qū)內(nèi)容的新的 short 緩沖區(qū)。
新緩沖區(qū)的內(nèi)容將為此緩沖區(qū)的內(nèi)容。此緩沖區(qū)內(nèi)容的更改在新緩沖區(qū)中是可見的,反之亦然;這兩個(gè)緩沖區(qū)的位置、界限和標(biāo)記值是相互獨(dú)立的。
新緩沖區(qū)的容量、界限、位置和標(biāo)記值將與此緩沖區(qū)同樣。
當(dāng)且僅當(dāng)此緩沖區(qū)為直接時(shí)。新緩沖區(qū)才是直接的,當(dāng)且僅當(dāng)此緩沖區(qū)為僅僅讀時(shí)。新緩沖區(qū)才是僅僅讀的。
返回:新的 short 緩沖區(qū)
6、public abstract ShortBuffer
asReadOnlyBuffer()
創(chuàng)建共享此緩沖區(qū)內(nèi)容的新的僅僅讀 short 緩沖區(qū)。
新緩沖區(qū)的內(nèi)容將為此緩沖區(qū)的內(nèi)容。此緩沖區(qū)內(nèi)容的更改在新緩沖區(qū)中是可見的。但新緩沖區(qū)將是僅僅讀的而且不同意改動(dòng)共享內(nèi)容。兩個(gè)緩沖區(qū)的位置、界限和標(biāo)記值是相互獨(dú)立的。
新緩沖區(qū)的容量、界限、位置和標(biāo)記值將與此緩沖區(qū)同樣。
假設(shè)此緩沖區(qū)本身是僅僅讀的。則此方法與 duplicate 方法全然同樣。
返回:新的僅僅讀 short 緩沖區(qū)
7、public abstract short get()
相對(duì) get 方法。
讀取此緩沖區(qū)當(dāng)前位置的 short,然后該位置遞增。
返回:緩沖區(qū)當(dāng)前位置的 short 拋出: BufferUnderflowException - 假設(shè)緩沖區(qū)當(dāng)前位置不小于其界限
8、public abstract ShortBuffer
put(short?s)
相對(duì) put 方法(可選操作)。
將給定 short 寫入此緩沖區(qū)的當(dāng)前位置,然后該位置遞增。
參數(shù):s - 要寫入的 short 返回:此緩沖區(qū) 拋出: BufferOverflowException - 假設(shè)此緩沖區(qū)的當(dāng)前位置不小于界限
ReadOnlyBufferException - 假設(shè)此緩沖區(qū)是僅僅讀的
9、public abstract short get(int?index)
絕對(duì) get 方法。讀取給定索引處的 short。
參數(shù):index - 將讀取 short 的位置的索引 返回:給定索引處的 short 拋出: IndexOutOfBoundsException - 假設(shè)
index 為負(fù)或不小于緩沖區(qū)界限
10、public abstract ShortBuffer
put(int?index,?short?s)
絕對(duì) put 方法(可選操作)。
將給定 short 寫入此緩沖區(qū)的給定索引處。
參數(shù):index - 將在該位置寫入 shorts - 要寫入的 short 值 返回:此緩沖區(qū) 拋出: IndexOutOfBoundsException - 假設(shè)
index 為負(fù)或不小于緩沖區(qū)界限 ReadOnlyBufferException - 假設(shè)此緩沖區(qū)是僅僅讀的
11、public ShortBuffer
get(short[]?dst,int?offset,int?length)
相對(duì)批量 get 方法。
此方法將此緩沖區(qū)的 short 傳輸?shù)浇o定的目標(biāo)數(shù)組中。
假設(shè)緩沖區(qū)中剩余的 short 少于滿足請(qǐng)求所需的 short,即假設(shè) length?>?remaining(),則不傳輸 short 且拋出
BufferUnderflowException。
否則,此方法將此緩沖區(qū)中的 length 個(gè) short 拷貝到給定數(shù)組中,從此緩沖區(qū)的當(dāng)前位置和數(shù)組中的給定偏移量位置開始復(fù)制。然后此緩沖區(qū)的位置遞增
length。
換句話說,調(diào)用此方法的形式為 src.get(dst,?off,?len),效果與下面循環(huán)語(yǔ)句全然同樣:
for (int i = off; i < off + len; i++)
dst[i] = src.get();
差別在于它首先檢查此緩沖區(qū)中是否具有足夠的 short。這樣可能效率更高。
參數(shù):dst - 要寫入 short 的數(shù)組offset - 要寫入的第一個(gè) short 在數(shù)組中的偏移量;必須為非負(fù)且不大于 dst.lengthlength - 要寫入給定數(shù)組中的 short 的最大數(shù)量。必須為非負(fù)且不大于 dst.length - offset
返回:此緩沖區(qū) 拋出: BufferUnderflowException - 假設(shè)此緩沖區(qū)中的剩余 short 少于
length IndexOutOfBoundsException - 假設(shè)關(guān)于
offset 和 length 參數(shù)的前提不成立
12、public ShortBuffer
get(short[]?dst)
相對(duì)批量 get 方法。
此方法將此緩沖區(qū)的 short 傳輸?shù)浇o定的目標(biāo)數(shù)組中。調(diào)用此方法的形式為 src.get(a),該調(diào)用與下面調(diào)用全然同樣:
src.get(a, 0, a.length)
返回:此緩沖區(qū) 拋出: BufferUnderflowException - 假設(shè)此緩沖區(qū)中的剩余 short 少于
length
13、public ShortBuffer
put(ShortBuffer?src)
相對(duì)批量 put 方法(可選操作)。
此方法將給定源緩沖區(qū)中的剩余 short 傳輸?shù)酱司彌_區(qū)中。假設(shè)源緩沖區(qū)中的剩余 short 多于此緩沖區(qū)中的剩余 short 空間,即 src.remaining()?>?remaining(),則不傳輸 short 且拋出
BufferOverflowException。
否則,此方法將給定緩沖區(qū)中的 n?=?src.remaining() 個(gè) short 拷貝到此緩沖區(qū)中,從每一個(gè)緩沖區(qū)的當(dāng)前位置開始復(fù)制。然后這兩個(gè)緩沖區(qū)的位置均遞增
n。
換句話說。調(diào)用此方法的形式為 dst.put(src),效果與下面循環(huán)語(yǔ)句全然同樣:
while (src.hasRemaining())
dst.put(src.get());
差別在于它首先檢查此緩沖區(qū)中是否有足夠空間。這樣可能效率更高。
參數(shù):src - 要從中讀取 short 的源緩沖區(qū);不能為此緩沖區(qū) 返回:此緩沖區(qū) 拋出: BufferOverflowException - 假設(shè)對(duì)于源緩沖區(qū)中剩余的 short,此緩沖區(qū)沒有足夠空間
IllegalArgumentException - 假設(shè)源緩沖區(qū)是此緩沖區(qū)
ReadOnlyBufferException - 假設(shè)此緩沖區(qū)是僅僅讀的
14、public ShortBuffer
put(short[]?src,?int?offset,int?length)
相對(duì)批量 put 方法(可選操作)。
此方法將給定源數(shù)組中的 short 傳輸?shù)酱司彌_區(qū)中。假設(shè)要從數(shù)組復(fù)制的 short 多于此緩沖區(qū)中的剩余 short 空間。即假設(shè) length?>?remaining(),則不傳輸 short 且拋出
BufferOverflowException。
否則,此方法將給定數(shù)組中的 length 個(gè) short 拷貝到此緩沖區(qū)中,從數(shù)組中給定偏移量位置和此緩沖區(qū)的當(dāng)前位置開始復(fù)制。
然后此緩沖區(qū)的位置遞增
length。
換句話說,調(diào)用此方法的形式為 dst.put(src,?off,?len),效果與下面循環(huán)語(yǔ)句全然同樣:
for (int i = off; i < off + len; i++)
dst.put(a[i]);
差別在于它首先檢查此緩沖區(qū)中是否有足夠空間。這樣可能效率更高。
參數(shù):src - 要從中讀取 short 的數(shù)組offset - 要讀取的第一個(gè) short 在數(shù)組中的偏移量;必須為非負(fù)且不大于 array.lengthlength - 要從給定數(shù)組讀取的 short 數(shù)量;必須為非負(fù)且不大于 array.length - offset
返回:此緩沖區(qū) 拋出: BufferOverflowException - 假設(shè)此緩沖區(qū)沒有足夠空間
IndexOutOfBoundsException - 假設(shè)關(guān)于
offset 和 length 參數(shù)的前提不成立 ReadOnlyBufferException - 假設(shè)此緩沖區(qū)是僅僅讀的
15、public final ShortBuffer
put(short[]?src)
相對(duì)批量 put 方法(可選操作)。
此方法將給定源 short 數(shù)組中的全部?jī)?nèi)容傳輸?shù)酱司彌_區(qū)中。調(diào)用此方法的形式為 dst.put(a),該調(diào)用與下面調(diào)用全然同樣:
dst.put(a, 0, a.length)
返回:此緩沖區(qū) 拋出: BufferOverflowException - 假設(shè)此緩沖區(qū)沒有足夠空間
ReadOnlyBufferException - 假設(shè)此緩沖區(qū)是僅僅讀的
16、public final boolean hasArray()
推斷是否可通過一個(gè)可訪問的 short 數(shù)組實(shí)現(xiàn)此緩沖區(qū)。
假設(shè)此方法返回 true,則能夠安全地調(diào)用 array 和
arrayOffset 方法。
指定者:類 Buffer 中的
hasArray
返回:當(dāng)且僅當(dāng)存在實(shí)現(xiàn)此緩沖區(qū)的數(shù)組,而且此緩沖區(qū)不是僅僅讀緩沖區(qū)時(shí),返回 true
17、public final short[] array()
返回實(shí)現(xiàn)此緩沖區(qū)的 short 數(shù)組(可選操作)。
此緩沖區(qū)的內(nèi)容改動(dòng)將導(dǎo)致返回的數(shù)組內(nèi)容改動(dòng)。反之亦然。
調(diào)用此方法之前要調(diào)用 hasArray 方法,以確保此緩沖區(qū)具有可訪問的底層實(shí)現(xiàn)數(shù)組。
指定者:類 Buffer 中的
array
返回:實(shí)現(xiàn)此緩沖區(qū)的數(shù)組 拋出: ReadOnlyBufferException - 假設(shè)存在實(shí)現(xiàn)此緩沖區(qū)的數(shù)組。但緩沖區(qū)是僅僅讀的
UnsupportedOperationException - 假設(shè)不存在某個(gè)可訪問的數(shù)組實(shí)現(xiàn)此緩沖區(qū)
18、public final int arrayOffset()
返回此緩沖區(qū)的第一個(gè)元素在緩沖區(qū)的底層實(shí)現(xiàn)數(shù)組中的偏移量(可選操作)。
假設(shè)存在實(shí)現(xiàn)此緩沖區(qū)的數(shù)組,則緩沖區(qū)位置 p 相應(yīng)于數(shù)組索引 p?+?arrayOffset()。
調(diào)用此方法之前要調(diào)用 hasArray 方法,以確保此緩沖區(qū)具有可訪問的底層實(shí)現(xiàn)數(shù)組。
指定者:類 Buffer 中的
arrayOffset
返回:此緩沖區(qū)的第一個(gè)元素在緩沖區(qū)數(shù)組中的偏移量 拋出: ReadOnlyBufferException - 假設(shè)存在實(shí)現(xiàn)此緩沖區(qū)的數(shù)組。但緩沖區(qū)是僅僅讀的
UnsupportedOperationException - 假設(shè)不存在某個(gè)可訪問的數(shù)組實(shí)現(xiàn)此緩沖區(qū)
19、public abstract ShortBuffer
compact()
壓縮此緩沖區(qū)(可選操作)。
將緩沖區(qū)當(dāng)前位置和界限之間的 short(假設(shè)有)拷貝到緩沖區(qū)的開始處。即將索引 p?=?position() 處的 short 拷貝到索引 0 處,將索引
p?+?1 處的 short 拷貝到索引 1 處,依此類推,直到將索引 limit()?-?1 處的 short 拷貝到索引
n?=?limit()?-?1?-?p 處。
然后將緩沖區(qū)的位置設(shè)置為 n+1,并將其界限設(shè)置為其容量。假設(shè)已定義了標(biāo)記。則丟棄它。
將緩沖區(qū)的位置設(shè)置為復(fù)制的 short 的數(shù)量,而不是零,以便調(diào)用此方法后能夠緊接著調(diào)用還有一個(gè)相對(duì) put 方法。
返回:此緩沖區(qū) 拋出: ReadOnlyBufferException - 假設(shè)此緩沖區(qū)是僅僅讀的
20、public abstract boolean
isDirect()
推斷此 short 緩沖區(qū)是否為直接的。
指定者:類 Buffer 中的
isDirect
返回:當(dāng)且僅當(dāng)此緩沖區(qū)為直接時(shí)。返回 true
21、public String
toString() ?返回總結(jié)了此緩沖區(qū)狀態(tài)的字符串。
返回:一個(gè)總結(jié)字符串
22、public int hashCode()
返回此緩沖區(qū)的當(dāng)前哈希碼。
short 緩沖區(qū)的哈希碼僅僅取決于其剩余元素;即取決于從 position() 開始一直到(包含) limit()?-?1 處的元素。
由于緩沖區(qū)哈希碼與內(nèi)容有關(guān),因此建議不要在哈希映射或類似數(shù)據(jù)結(jié)構(gòu)中將緩沖區(qū)用作鍵,除非知道它們的內(nèi)容不會(huì)發(fā)生更改。
覆蓋:類 Object 中的
hashCode
返回:此緩沖區(qū)的當(dāng)前哈希碼
23、public boolean equals(Object?ob)
推斷此緩沖區(qū)是否與還有一個(gè)對(duì)象同樣。
兩個(gè) short 緩沖區(qū)是同樣的。當(dāng)且僅當(dāng):
它們具有同樣的元素類型,
它們具有同樣數(shù)量的剩余元素,而且
兩個(gè)剩余元素序列(與它們的起始位置無關(guān))逐點(diǎn)同樣。
short 緩沖區(qū)與不論什么其它類型的對(duì)象都不同。
覆蓋:類 Object 中的
equals
參數(shù):ob - 此緩沖區(qū)要比較的對(duì)象 返回:當(dāng)且僅當(dāng)此緩沖區(qū)與給定對(duì)象同樣時(shí),返回 true
24、public int compareTo(ShortBuffer?that)
將此緩沖區(qū)與還有一個(gè)緩沖區(qū)進(jìn)行比較。
比較兩個(gè) short 緩沖區(qū)的方法是按字典順序比較它們的剩余元素序列,而不考慮每一個(gè)序列在其相應(yīng)緩沖區(qū)中的起始位置。
short 緩沖區(qū)不能與不論什么其它類型的對(duì)象進(jìn)行比較。
指定者:接口 Comparable<ShortBuffer> 中的
compareTo
參數(shù):that - 要比較的對(duì)象。 返回:假設(shè)此緩沖區(qū)小于、等于或大于給定緩沖區(qū)。則對(duì)應(yīng)返回負(fù)整數(shù)、零或正整數(shù)
25、public abstract ByteOrder
order()
獲取此緩沖區(qū)的字節(jié)順序。
通過分配或通過包裝現(xiàn)有 short 數(shù)組而創(chuàng)建的 short 緩沖區(qū)的字節(jié)順序是底層硬件的本機(jī)順序。
作為字節(jié)緩沖區(qū)的視圖而創(chuàng)建的 short 緩沖區(qū)的字節(jié)順序是創(chuàng)建視圖時(shí)字節(jié)緩沖區(qū)的字節(jié)順序。
返回:此緩沖區(qū)的字節(jié)順序
總結(jié)
以上是生活随笔為你收集整理的java中的ShortBuffer的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ajaxReturn 之前dump调试,
- 下一篇: Atitit. c# 语法新特性 c#