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