Java IntBuffer array()方法
java.nio.IntBuffer 类的 array() 方法是用来返回支持这个缓冲区的int数组。对这个缓冲区内容的修改将导致返回数组的内容被修改,反之亦然。在调用此方法之前,先使用Invoke()和hasArray()方法,以确保此缓冲区有一个可访问的支持数组。
语法
public final int[] array()
返回值: 该方法返回支持该缓冲区的数组。
异常: 该方法抛出 ReadOnlyBufferException (如果这个缓冲区是由一个数组支持的,但是是只读的)。
下面的程序说明了 array() 方法。
例子 1 :
// Java program to demonstrate// array() method import java.nio.*;import java.util.*; public class GFG { public static void main(String[] args) { // Declaring the capacity of the IntBuffer int capacity = 10; // Creating the IntBuffer try { // creating object of Intbuffer // and allocating size capacity IntBuffer ib = IntBuffer.allocate(capacity); // putting the value in Intbuffer ib.put(7); ib.put(2, 6); ib.rewind(); // getting array from ib IntBuffer using array() method int[] ibb = ib.array(); // printing the IntBuffer ib System.out.println("IntBuffer: " + Arrays.toString(ibb)); } catch (IllegalArgumentException e) { System.out.println("IllegalArgumentException catched"); } catch (ReadOnlyBufferException e) { System.out.println("ReadOnlyBufferException catched"); } }}
输出:
IntBuffer: [7, 0, 6, 0, 0, 0, 0, 0, 0, 0]
例子 2 :
// Java program to demonstrate// array() method import java.nio.*;import java.util.*; public class GFG { public static void main(String[] args) { // Declaring the capacity of the ib int capacity1 = 10; // Declaring the capacity of the ib1 int capacity2 = 5; // Creating the IntBuffer try { // // ib // // creating object of Intbuffer ib // and allocating size capacity IntBuffer ib = IntBuffer.allocate(capacity1); // putting the value in ib ib.put(7); ib.put(2, 6); ib.put(3, 7); ib.rewind(); // print the IntBuffer System.out.println("IntBuffer ib: " + Arrays.toString(ib.array())); // // ib1 // // creating object of Intbuffer ib1 // and allocating size capacity IntBuffer ib1 = IntBuffer.allocate(capacity2); // putting the value in ib1 ib1.put(1, 4); ib1.put(2, 6); ib1.rewind(); // print the IntBuffer System.out.println("\nIntBuffer ib1: " + Arrays.toString(ib1.array())); // Creating a read-only copy of IntBuffer // using asReadOnlyBuffer() method IntBuffer readOnlyib = ib.asReadOnlyBuffer(); // print the IntBuffer System.out.print("\nReadOnlyBuffer IntBuffer: "); while (readOnlyib.hasRemaining()) System.out.print(readOnlyib.get() + ", "); // try to change readOnlyib System.out.println("\n\nTrying to get the array" + " from ReadOnlyib for editing"); int[] ibarr = readOnlyib.array(); } catch (IllegalArgumentException e) { System.out.println("IllegalArgumentException catched"); } catch (ReadOnlyBufferException e) { System.out.println("Exception thrown: " + e); } }}输出:
IntBuffer ib: [7, 0, 6, 7, 0, 0, 0, 0, 0, 0]IntBuffer ib1: [0, 4, 6, 0, 0]ReadOnlyBuffer IntBuffer: 7, 0, 6, 7, 0, 0, 0, 0, 0, 0, Trying to get the array from ReadOnlyib for editingException thrown: java.nio.ReadOnlyBufferException
