Java DoubleBuffer duplicate()方法及示例
java.nio.DoubleBuffer 类的 replicate() 方法用于创建一个新的浮动缓冲区,共享给定的缓冲区的内容。
新的缓冲区的内容将是这个缓冲区的内容。这个缓冲区的内容的变化将在新的缓冲区中可见,反之亦然;两个缓冲区的位置、极限和标记值将是独立的。
新缓冲区的容量、极限、位置和标记值将与这个缓冲区的相同。当且仅当这个缓冲区是直接的,新的缓冲区将是直接的;当且仅当这个缓冲区是只读的,它将是只读的。
语法:
public abstract DoubleBuffer duplicate()
返回值: 该方法返回 新的双缓冲区 ,该缓冲区承载了之前的双缓冲区内容。
下面是一些例子来说明double()方法。
程序1:
// Java program to demonstrate// duplicate() method// Using direct Doublebuffer import java.nio.*;import java.util.*; public class GFG { public static void main(String[] args) { // Declaring the capacity of the DoubleBuffer int capacity = 10; // Creating the DoubleBuffer try { // creating object of Doublebuffer // and allocating size capacity DoubleBuffer db1 = DoubleBuffer.allocate(capacity); // putting the value in Doublebuffer db1.put(8.56F); db1.put(2, 9.61F); db1.rewind(); // print the Original DoubleBuffer System.out.println("Original DoubleBuffer: " + Arrays.toString(db1.array())); // Creating a duplicate copy of DoubleBuffer // using duplicate() method DoubleBuffer db2 = db1.duplicate(); // print the duplicate copy of DoubleBuffer System.out.print("\nDuplicate DoubleBuffer: " + Arrays.toString(db2.array())); } catch (IllegalArgumentException e) { System.out.println("IllegalArgumentException catched"); } catch (ReadOnlyBufferException e) { System.out.println("ReadOnlyBufferException catched"); } }}
输出:
Original DoubleBuffer: [8.5600004196167, 0.0, 9.609999656677246, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]Duplicate DoubleBuffer: [8.5600004196167, 0.0, 9.609999656677246, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
例2 :
// Java program to demonstrate// duplicate() method// using read-onlyDoublebuffer import java.nio.*;import java.util.*; public class GFG { public static void main(String[] args) { // Declaring the capacity of the DoubleBuffer int capacity = 10; // Creating the DoubleBuffer try { // creating object of Doublebuffer // and allocating size capacity DoubleBuffer db1 = DoubleBuffer.allocate(capacity); // putting the value in Doublebuffer db1.put(8.56F); db1.put(2, 9.61F); db1.rewind(); // print the Original DoubleBuffer System.out.println("Original DoubleBuffer: " + Arrays.toString(db1.array())); // Creating a read-only copy of DoubleBuffer // using asReadOnlyBuffer() method DoubleBuffer readonly = db1.asReadOnlyBuffer(); // print the read-only copy of DoubleBuffer System.out.print("\nread-only DoubleBuffer: "); while (readonly.hasRemaining()) System.out.print(readonly.get() + ", "); System.out.println(""); // Rewinding the readonly DoubleBuffer readonly.rewind(); // Creating a duplicate copy of DoubleBuffer // using duplicate() method DoubleBuffer db2 = readonly.duplicate(); // print the duplicate copy of DoubleBuffer System.out.print("\nduplicate copy of read-only DoubleBuffer: "); while (db2.hasRemaining()) System.out.print(db2.get() + ", "); System.out.println(""); } catch (IllegalArgumentException e) { System.out.println("IllegalArgumentException catched"); } catch (ReadOnlyBufferException e) { System.out.println("ReadOnlyBufferException catched"); } }}输出:
Original DoubleBuffer: [8.5600004196167, 0.0, 9.609999656677246, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]read-only DoubleBuffer: 8.5600004196167, 0.0, 9.609999656677246, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, duplicate copy of read-only DoubleBuffer: 8.5600004196167, 0.0, 9.609999656677246, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
