Java中的CharBuffer arrayOffset()方法

这个 arrayOffset() 方法 JAVA尼奥。CharBuffer 类用于返回缓冲区第一个元素的缓冲区备份数组中的偏移量。这意味着,如果这个缓冲区由一个数组支持,那么缓冲区位置p对应于数组索引p+arrayOffset()。

null

为了检查这个缓冲区是否有后备数组, hasArray() 方法可以使用。它确保该缓冲区有一个可访问的备份阵列。

语法:

public final int arrayOffset()

返回值: 此方法返回 抵消 在缓冲区的第一个元素的缓冲区数组中。

例外情况: 这个方法抛出 ReadOnlyBufferException 如果此缓冲区由数组支持但为只读

下面的程序说明了 arrayOffset() 方法

例1:

// Java program to demonstrate
// arrayOffset() method
import java.nio.*;
import java.util.*;
public class GFG {
public static void main(String[] args)
{
// Declaring the capacity of the CharBuffer
int capacity = 10 ;
// Creating the CharBuffer
try {
// creating object of CharBuffer
// and allocating size capacity
CharBuffer cb = CharBuffer.allocate(capacity);
// putting the value in CharBuffer
cb.put( 'a' );
cb.put( 2 , 'b' );
// print the CharBuffer
System.out.println( "CharBuffer: "
+ Arrays.toString(cb.array()));
// print the arrayOffset
System.out.println( "arrayOffset: "
+ cb.arrayOffset());
}
catch (IllegalArgumentException e) {
System.out.println( "IllegalArgumentException catched" );
}
catch (ReadOnlyBufferException e) {
System.out.println( "Exception throws" + e);
}
}
}


输出:

CharBuffer: [a, , b, , , , , , , ]
arrayOffset: 0

例2: 演示ReadOnlyBufferException

// Java program to demonstrate
// arrayOffset() method
import java.nio.*;
import java.util.*;
public class GFG {
public static void main(String[] args)
{
// Declaring the capacity of the CharBuffer
int capacity = 10 ;
// Creating the CharBuffer
try {
// creating object of CharBuffer
// and allocating size capacity
CharBuffer fb = CharBuffer.allocate(capacity);
// putting the value in CharBuffer
fb.put( 'a' );
fb.put( 2 , 'b' );
fb.rewind();
// Creating a read-only copy of CharBuffer
// using asReadOnlyBuffer() method
CharBuffer cb1 = fb.asReadOnlyBuffer();
// print the CharBuffer
System.out.print( "Read only buffer : " );
while (cb1.hasRemaining())
System.out.print(cb1.get() + ", " );
// next line
System.out.println( "" );
// print the arrayOffset
System.out.println( "Try to print the array offset"
+ " of read only buffer" );
System.out.println( "arrayOffset: " + cb1.arrayOffset());
}
catch (IllegalArgumentException e) {
System.out.println( "Exception throws: " + e);
}
catch (ReadOnlyBufferException e) {
System.out.println( "Exception throws: " + e);
}
}
}


输出:

Read only buffer : a, , b, , , , , , , , 

Try to print the array offset of read only buffer
Exception throws: java.nio.ReadOnlyBufferException

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享