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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。