DoubleBuffer wrap() method in Java with Examples

2025 年 3 月 25 日 | 阅读 5 分钟

Java 中的 DoubleBuffer.wrap() 方法允许我们创建一个由现有双精度数组支持的 DoubleBuffer。通过这种技术,我们可以使用现有的数组来存储缓冲区的数据,而无需复制。缓冲区的限制设置为数组的长度,容量等于其长度。

wrap() 方法主要包含两个方法。

  1. wrap(double[] array)
  2. wrap(double[] array, int offset, int length)

wrap(double[] array)

java.nio.DoubleBuffer 类有一个 wrap() 函数。要将双精度 数组 包装到缓冲区中,请使用 DoubleBuffer 。也就是说,对缓冲区的更改也会影响给定的双精度数组,反之亦然。新缓冲区将由给定的双精度数组支持。新缓冲区的 position 为零,mark 未定义,容量和 limit 为 array.length。提供的数组将用作其备份数组,零将作为其数组偏移量。

语法

参数:作为参数传递给此函数的是将支持此缓冲区的数组。

返回值:此方法返回新的双精度缓冲区。

示例 1

代码展示了如何使用 DoubleBuffer.wrap() 方法从现有双精度数组创建 DoubleBuffer。首先显示数组的长度和内容。接下来,它使用 wrap() 将数组转换为 DoubleBuffer,以便缓冲区可以使用该数组而无需传输数据。显示缓冲区的 position 和 capacity,并打印其内容。调用 rewind() 后,缓冲区的 position 被重置为 0,但这不会影响缓冲区的 capacity 或底层数组,因为它们都是从包装的数组获得的。

实施

文件名: BufferWrapExample1.java

输出

 
The Array length is given by : 4
The Array element is given by : [4.23, 8.53, 12.23, 16.24]
The doubleBuffer is : [4.23, 8.53, 12.23, 16.24]
The doublebuffer capacity is : 4
The doublebuffer position is : 0   

wrap(double[] array, int offset, int length)

在此,对缓冲区的更改也会影响给定的双精度数组,反之亦然。新缓冲区将由给定的双精度数组支持。新缓冲区将具有 array.length 的容量,一个 offset 位置,offset + length 的 limit,以及一个未定义的 mark。提供的数组将作为其备份数组,零将作为其数组偏移量。

语法

参数

此方法需要以下变量

array:用于处理新添加缓冲区的数组。

offset 将使用的子数组的偏移量;它不能大于 array.length,也不能为负数。此值将是新缓冲区的 position。

length:将使用的子数组的长度;它不能大于 array.length - offset,也不能为负数。新缓冲区的 limit 将是 offset + length。

返回值:此方法返回新的双精度缓冲区。

异常:如果 offset 和 length 参数不满足先决条件,则 函数 会抛出 IndexOutOfBoundsException。

示例 1

代码展示了如何使用带偏移量和长度的 wrap() 方法来创建 DoubleBuffer。初始化双精度数组后,它将数组包装到从索引 0 到数组整个长度的 DoubleBuffer 中。显示缓冲区的 position 和 capacity,以及其内容。通过调用 rewind() 方法将缓冲区的 position 重置为 0。position 被重置,但缓冲区的 capacity 和底层数组都不会受到 wrap() 方法的影响,该方法将缓冲区的 capacity 设置为与数组的长度匹配。

实施

文件名: BufferWrapdoubleExample1.java

输出

 
The Array length is given by : 4
 The Array element is given by : [4.23, 8.53, 12.23, 16.24]
 The doubleBuffer is : [4.23, 8.53, 12.23, 16.24]
 Thedoublebuffer capacity is : 4
 The doublebuffer position is : 0   

示例 2

代码中使用 wrap() 方法通过给定的偏移量和长度创建 DoubleBuffer。它在索引 1 处包装数组后跨越了整个数组长度。在包装之后,使用 Rewind() 将缓冲区的 position 重置为 0。然后显示缓冲区的 position、capacity 和内容。重绕后,position 设置为 0,capacity 指示从偏移量到数组末尾的项数。如果偏移量和长度参数错误(例如,如果偏移量加上长度超过了数组的长度),它将抛出 IndexOutOfBoundsException。

实施

文件名: BufferWrapdoubleExample2.java

输出

 
The Array length is given by : 4
The Array element is given by : [4.23, 8.53, 12.23, 16.24]
Exception in thread "main" java.lang.IndexOutOfBoundsException
at java.base/java.nio.DoubleBuffer.wrap(DoubleBuffer.java:420)
at BufferWrapdoubleExample1.main(BufferWrapdoubleExample1.java:16)   

下一主题javac 未识别