DoubleBuffer slice() method in Java with Examples

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

java.nio.DoubleBuffer 类有一个 slice() 方法。使用 DoubleBuffer 类创建的新 double 缓冲区中包含的是由提供的缓冲区内容的相似子序列组成。新缓冲区的内容将从当前缓冲区的当前位置开始。

新缓冲区将包含对当前缓冲区内容所做的更改,反之亦然。两个缓冲区的标记 (mark)、限制 (limit) 和位置 (position) 的值是相互独立的。新缓冲区的容量和限制将是缓冲区中剩余 double 的数量,位置为零,标记为未定义。仅当此缓冲区是只读的,并且仅当它是直接缓冲区时,新缓冲区才会是只读的。

语法

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

示例 1

该代码演示了如何使用 slice() 方法和 DoubleBuffer 。创建并初始化了一个容量为 12 的 DoubleBuffer,其中包含两个 double 数值 7.56 和 8.39。通过 slice() 技术创建了一个新的 DoubleBuffer (floatbuff2),它与旧缓冲区 (floatbuff1) 共享内容,但具有一个从 floatbuff1 当前位置开始的替代视图。slice() 方法创建了对原始缓冲区数据的视图,每个视图可能有不同的位置和边界,并且在一个缓冲区中进行的更改会反映在另一个缓冲区中。

实施

文件名: BufferSilceExample1.java

输出

 
The Original DoubleBuffer is given by: [7.559999942779541, 8.390000343322754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
at the position: 2
and the capacity: 12
The shared subsequence DoubleBuffer is given by : [7.559999942779541, 8.390000343322754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
at the position: 0
and the capacity: 10   

示例 2

以下代码演示了如何使用 DoubleBuffer 的 slice() 方法构建缓冲区子序列的视图。将四个 double 值加载到一个容量为 12 的已初始化 DoubleBuffer 中。在显示原始缓冲区的原始内容、位置和容量后,使用 slice() 方法构建了一个从 floatbuff1 当前位置开始的子序列视图 (floatbuff2)。接下来,向 floatbuff1 添加新值,由于 floatbuff1 和 floatbuff2 使用相同的基础数据,因此它们都反映了这些新值。

实施

文件名: BufferSilceExample2.java

输出

 
The Original DoubleBuffer is given by: [7.559999942779541, 8.390000343322754, 6.25, 5.139999866485596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
at the position: 4
and the capacity: 12
The shared subsequence DoubleBuffer is given by : [7.559999942779541, 8.390000343322754, 6.25, 5.139999866485596, 7.230000019073486, 8.649999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
at the position: 0
and the capacity: 8   

下一主题Java 解释器