ByteBuffer 保存要在 I/O 操作中使用的整数值序列。 ByteBuffer 类提供以下四类针对长缓冲区的操作:
- 读取单个字节的绝对和相对 get 方法。
- 写入单个字节的绝对和相对 put 方法。
- 相对批量 put 和 get 方法,将连续的字节序列从 int 数组或其他一些字节缓冲区传输到此缓冲区,并从此缓冲区传输到数组。
短缓冲区可以通过以下方式创建:
- allocate():这为缓冲区的内容分配空间。
- wrap():这会将现有的长数组包装到缓冲区中。
ByteBuffer 类的大多数方法与 ByteBuffer 定义的方法直接类似。
类别声明:
public abstract class ByteBuffer
extends Buffer
implements Comparable<ByteBuffer>
CharBuffer类的方法:
方法 | 说明 |
---|---|
ByteBuffer allocate() | 该方法分配一个新的字节缓冲区。 |
ByteBuffer allocateDirect() | 此方法分配一个新的直接字节缓冲区。 |
ByteBuffer array() | 此方法返回支持此缓冲区的字节数组 |
ByteBuffer arrayOffset() | 此方法返回缓冲区第一个元素在该缓冲区的后备数组中的偏移量。 |
ByteBuffer asCharBuffer() | 此方法创建此字节缓冲区的视图作为字符缓冲区。 |
ByteBuffer asDoubleBuffer() | 此方法将此字节缓冲区的视图创建为双缓冲区。 |
ByteBuffer asFloatBuffer() | 此方法创建此字节缓冲区的视图作为浮点缓冲区。 |
ByteBuffer asIntBuffer() | 此方法将此字节缓冲区的视图创建为 int 缓冲区。 |
ByteBuffer asLongBuffer() | 此方法将此字节缓冲区的视图创建为长缓冲区。 |
ByteBuffer asReadOnlyBuffer() | 此方法创建一个新的只读字节缓冲区,共享该缓冲区的内容。 |
ByteBuffer asShortBuffer() | 此方法创建此字节缓冲区的视图作为短缓冲区。 |
ByteBuffer compact() | 此方法压缩此缓冲区。 |
ByteBuffer compareTo() | 此方法将此缓冲区与另一个缓冲区进行比较。 |
ByteBuffer duplicate() | 此方法创建一个共享该缓冲区内容的新字节缓冲区。 |
ByteBuffer equals() | 此方法告知此缓冲区是否等于另一个对象。 |
ByteBuffer get() | 该方法是一个相对 get 方法,返回缓冲区当前位置的字节。 |
ByteBuffer get() | 该方法是一个相对批量获取方法并返回该缓冲区。 |
ByteBuffer get() | 此方法是相对批量获取方法并返回此缓冲区。 |
ByteBuffer get() | 此方法是绝对 get 方法,返回给定索引处的字节。 |
ByteBuffer getChar() | 该方法是一个相对 get 方法,用于读取 char 值并返回缓冲区当前位置的 char 值。 |
ByteBuffer getChar() | 此方法是绝对 get 方法,用于读取 char 值并返回给定索引处的 char 值。 |
ByteBuffer getDouble() | 该方法是一个相对 get 方法,用于读取双精度值并返回缓冲区当前位置的双精度值。 |
ByteBuffer getDouble() | 此方法是一个绝对 get 方法,用于读取双精度值并返回给定索引处的双精度值。 |
ByteBuffer getFloat() | 该方法是一个相对 get 方法,用于读取浮点值并返回缓冲区当前位置的浮点值。 |
ByteBuffer getFloat() | 此方法是一个绝对 get 方法,用于读取浮点值并返回给定索引处的浮点值。 |
ByteBuffer getInt() | 此方法是一个相对 get 方法,用于读取 int 值并返回缓冲区当前位置的 int 值。 |
ByteBuffer getInt() | 此方法是绝对获取方法,用于读取 int 值并返回给定索引处的 int 值。 |
ByteBuffer getLong() | 该方法是一个相对 get 方法,用于读取 long 值并返回缓冲区当前位置的 long 值。 |
ByteBuffer getLong() | 此方法是用于读取 long 值的绝对 get 方法,并返回给定索引处的 int 值。 |
ByteBuffer getShort() | 该方法是一个相对 get 方法,用于读取短值并返回缓冲区当前位置的long值。 |
ByteBuffer getShort() | 此方法是用于读取短值的绝对 get 方法,并返回给定索引处的 int 值。 |
ByteBuffer hasArray() | 此方法告知此缓冲区是否由可访问的字节数组支持。 |
ByteBuffer hashCode() | 该方法返回该缓冲区的当前哈希码。 |
ByteBuffer isDirect() | 这个方法告诉我们这个字节缓冲区是否是直接的。 |
ByteBuffer order() | 该方法检索该缓冲区的字节顺序。 |
ByteBuffer order() | 此方法修改此缓冲区的字节顺序。 |
ByteBuffer put()方法 | 此方法是相对放置方法并返回此缓冲区。 |
ByteBuffer put()方法 | 此方法是相对批量放置方法并返回此缓冲区。 |
ByteBuffer put()方法 | 此方法是相对批量放置方法并返回此缓冲区。 |
ByteBuffer put()方法 | 此方法是绝对放置方法并返回此缓冲区。 |
ByteBuffer putChar() | 该方法是用于写入 char 值的相对 put 方法。 |
ByteBuffer putChar() | 该方法是写入 char 值的绝对 put 方法。 |
ByteBuffer putDouble() | 该方法是用于写入双精度值的相对 put 方法。 |
ByteBuffer putDouble() | 该方法是用于写入双精度值的绝对 put 方法。 |
ByteBuffer putFloat() | 该方法是用于写入浮点值的相对 put 方法。 |
ByteBuffer putFloat() | 该方法是用于写入浮点值的绝对 put 方法。 |
ByteBuffer putInt() | 此方法是用于写入int值的相对放置方法。 |
ByteBuffer putInt() | 该方法是写入int值的绝对put方法。 |
ByteBuffer putLong() | 该方法是写入 long 值的绝对 put 方法。 |
ByteBuffer putLong() | 该方法是用于写入long值的相对 put 方法。 |
ByteBuffer putShort() | 该方法是写入短值的绝对 put 方法。 |
ByteBuffer putShort() | 该方法是一种用于写入短值的相对 put 方法。 |
ByteBuffer slice() | 此方法创建一个新的字节缓冲区,其内容是该缓冲区内容的共享子序列。 |
ByteBuffer toString() | 此方法返回一个总结该缓冲区状态的字符串。 |
ByteBuffer wrap() | 此方法将字节数组包装到缓冲区中。 |
ByteBuffer wrap() | 此方法将字节数组包装到缓冲区中。 |
以下是一些演示CharBuffer类及其方法的程序:
示例 1:
Java
// Java program to demonstrate
// ByteBuffer class
import java.nio.*;
import java.util.*;
public class GFG {
public static void main(String[] args)
{
// Declaring the capacity of the ByteBuffer
int capacity = 4;
// Creating the ByteBuffer
try {
// creating object of ByteBuffer
// and allocating size capacity
ByteBuffer bb = ByteBuffer.allocate(capacity);
// putting the int to byte typecast value
// in ByteBuffer using putInt() method
bb.put((byte)10);
bb.put((byte)20);
bb.put((byte)30);
bb.put((byte)40);
bb.rewind();
// print the ByteBuffer
System.out.println(
"Original ByteBuffer: "
+ Arrays.toString(bb.array()));
}
catch (IllegalArgumentException e) {
System.out.println(
"IllegalArgumentException catched");
}
catch (ReadOnlyBufferException e) {
System.out.println(
"ReadOnlyBufferException catched");
}
}
}
输出
Original ByteBuffer: [10, 20, 30, 40]
示例 2:
Java
// Java program to demonstrate
// ByteBuffer class
import java.nio.*;
import java.util.*;
public class GFG {
public static void main(String[] args)
{
// Declaring the capacity of the ByteBuffer
int capacity = 50;
// Creating the ByteBuffer
try {
// creating object of ByteBuffer
// and allocating size capacity
ByteBuffer bb = ByteBuffer.allocate(capacity);
// changeing bytebuffer view as char buffer
// and putting a string value
bb.asCharBuffer().put("GeeksForGeeks");
// Declaring char variable c
char c;
// print the ByteBuffer
System.out.print("Char buffer : ");
while ((c = bb.getChar()) != 0)
System.out.print(c + " ");
System.out.println();
}
catch (IllegalArgumentException e) {
System.out.println("Exception thrown : " + e);
}
catch (ReadOnlyBufferException e) {
System.out.println("Exception thrown : " + e);
}
}
}
输出
Char buffer : G e e k s F o r G e e k s
相关用法
- Java java.nio.ByteOrder用法及代码示例
- Java java.nio.Buffer用法及代码示例
- 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用法及代码示例
注:本文由纯净天空筛选整理自mank1083大神的英文原创作品 java.nio.ByteBuffer Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。