Buffer 類為特定基元類型的數據塊提供緩衝區或容器。有限的元素序列線性存儲在緩衝區中。
緩衝區的重要屬性可以方便地在數據中執行讀寫操作,包括:
- Capacity: 此屬性確定緩衝區中可以存在的最大元素數。
- Limit: 該屬性通過提供元素的索引來確定可以讀取或寫入的數據的限製。
- Position: 該屬性確定當前元素在緩衝區中的位置。
用法:類聲明
public abstract class Buffer extends Object
Buffer 類為以下每個緩衝區數據類型提供了子類,例如 ByteBuffer、MappedByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer、ShortBuffer。 Buffer類從java.lang.Object類繼承了以下方法,例如clone()、finalize()、getClass()、hashCode()、notify()、notifyAll()、toString()、wait()。現在,繼續討論 Buffer 類的方法,如下所示,按字母順序以表格格式顯示:
方法 | 說明 |
---|---|
array() | 此方法返回支持此緩衝區的數組 |
arrayOffset() | 此方法返回緩衝區第一個元素在該緩衝區的後備數組中的偏移量 |
capacity() | 該方法返回該緩衝區的容量。 |
clear() | 該方法會清除該緩衝區。 |
flip() | 該方法翻轉該緩衝區。 |
hasArray() | 此方法告知此緩衝區是否由可訪問數組支持。 |
hasRemaining() | 此方法告知當前位置和限製之間是否有任何元素。 |
isDirect() | 這個方法告訴我們這個緩衝區是否是直接的。 |
isReadOnly() | 這個方法告訴我們這個緩衝區是否是隻讀的。 |
limit() | 此方法返回此緩衝區的限製。 |
limit(int newLimit) | 此方法設置此緩衝區的限製。 |
mark() | 此方法將此緩衝區的標記設置在其位置。 |
position() | 該方法返回該緩衝區的位置。 |
position(int newPosition) | 該方法設置該緩衝區的位置。 |
remaining() | 此方法返回當前位置和限製之間的元素數量。 |
reset() | 此方法將此緩衝區的位置重置為之前標記的位置。 |
rewind() | 此方法倒回此緩衝區。 |
實現:Buffer類及其方法
示例 1
Java
// Java program to demonstrate Buffer Class
// Importing required libraries
import java.nio.*;
import java.util.*;
// Main class
public class GFG {
// Main driver method
public static void main(String[] args)
{
// Declaring the capacity of the ByteBuffer
int capacity = 5;
// Try block to check for exceptions
try {
// Creating the ByteBuffer
// Creating object of ByteBuffer class and
// allocating size capacity
ByteBuffer bufferObj
= ByteBuffer.allocate(capacity);
// Putting the int to byte typecast
// value in ByteBuffer using put() method
// Custom input entries
bufferObj.put((byte)10);
bufferObj.put((byte)20);
bufferObj.put((byte)30);
bufferObj.put((byte)40);
bufferObj.put((byte)50);
// Typecasting ByteBuffer into Buffer
Buffer bufferObj1 = (Buffer)bufferObj;
// Getting array that backs this buffer
// using array() method
byte[] arr = (byte[])bufferObj1.array();
// Display message only
System.out.print(" The array is : [");
// Print the array
for (int i = 0; i < arr.length; i++)
System.out.print(" " + arr[i]);
System.out.print(" ]");
}
// Catch block to handle the exception
catch (ReadOnlyBufferException e) {
// Print message where exception occurred
// is displayed on console
System.out.println("Exception throws: " + e);
}
}
}
輸出
The array is : [ 10 20 30 40 50 ]
示例 2
Java
// Java program to demonstrate Buffer class
// Importing required libraries
import java.nio.*;
import java.util.*;
// Main class
public class GFG {
// Main driver method
public static void main(String[] args)
{
// try block to check for exceptions
try {
// Creating and initializing byte array
// with custom elements
byte[] barr = { 10, 20, 30, 40, 50 };
// Creating object of ByteBuffer class
// and allocating size capacity
ByteBuffer bufferObj = ByteBuffer.wrap(barr);
// Typecasting ByteBuffer into Buffer
Buffer bufferObj1 = (Buffer)bufferObj;
// now trying to set the position at index 2
bufferObj1.position(2);
// Setting this buffer mark position
// using mark() method
bufferObj1.mark();
// Again trying to set the position at index 4
bufferObj1.position(5);
// Display the position
System.out.println("position before reset: "
+ bufferObj1.position());
// Now trying to call clear() to restore
// to the position at index 0 by discarding the
// mark
bufferObj1.clear();
// Print and display the position
System.out.println("position after reset: "
+ bufferObj1.position());
}
// Catch block to handle the exception
catch (InvalidMarkException e) {
// Display message to be showcase when exception
// occurred
System.out.println(
"new position is less than "
+ "the position we marked before ");
// Print the exception on the console
// along with display message
System.out.println("Exception throws: " + e);
}
}
}
輸出
position before reset: 5 position after reset: 0
相關用法
- Java java.nio.ByteBuffer用法及代碼示例
- Java java.nio.ByteOrder用法及代碼示例
- Java java.nio.IntBuffer用法及代碼示例
- Java java.nio.file.FileStore用法及代碼示例
- Java java.nio.FloatBuffer用法及代碼示例
- Java java.nio.file.LinkPermission用法及代碼示例
- Java java.nio.ShortBuffer用法及代碼示例
- Java java.nio.DoubleBuffer用法及代碼示例
- Java java.nio.channels.spi.SelectorProvider用法及代碼示例
- Java java.nio.charset.CoderResult用法及代碼示例
- Java java.nio.charset.CodingErrorAction用法及代碼示例
- Java java.nio.channels.spi.AsynchronousChannelProvider用法及代碼示例
- Java java.nio.charset.CharsetEncoder用法及代碼示例
- Java java.nio.file.attribute.AclEntry用法及代碼示例
- Java java.nio.charset.Charset用法及代碼示例
- Java java.nio.LongBuffer用法及代碼示例
- Java java.nio.channels.Selector用法及代碼示例
- Java java.nio.file.spi.FileTypeDetector用法及代碼示例
- Java java.nio.file.attribute.FileTime用法及代碼示例
- Java java.nio.file.SimpleFileVisitor用法及代碼示例
- Java java.nio.file.FileSystems用法及代碼示例
- Java java.nio.CharBuffer用法及代碼示例
- Java java.nio.file.FileSystem用法及代碼示例
- Java java.nio.file.Paths用法及代碼示例
- Java java.net.SocketException用法及代碼示例
注:本文由純淨天空篩選整理自surbhityagi15大神的英文原創作品 java.nio.Buffer Class in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。