DoubleBuffer put() methods in Java with Examples

2025年3月27日 | 阅读7分钟

java.nio.DoubleBuffer 有一个 put(double f) 方法。DoubleBuffer 类用于在写入给定双精度值到动态形成的双精度缓冲区当前位置后增加其位置。

语法

参数: 此方法接受的参数是需要写入双精度缓冲区中的双精度值 f。

返回值: 该函数将双精度值插入返回的缓冲区中。

异常: 此方法抛出以下异常

BufferOverflowException- 如果此缓冲区的当前位置大于或等于其限制。

ReadOnlyBufferException- 如果此缓冲区只能读取。

示例 1

该代码说明了如何使用DoubleBuffer在两个缓冲区之间移动数据。buffer1包含三个双精度值(1.1、2.2和3.3),并被分配了容量为5。当buffer1填充完毕后,使用flip()技术将其从写入模式转换为读取模式。然后使用put(DoubleBuffer src)方法将buffer 1的内容移动到buffer 2。最后,buffer2被切换到读取模式,显示并迭代其内容。示例演示了缓冲区之间的数据传输和缓冲区模式切换。

实施

文件名: BufferPutExample1.java

输出

 
The Original DoubleBuffer  is given by : 1.1
The Original DoubleBuffer  is given by : 2.2
The Original DoubleBuffer  is given by : 3.3   

示例 2

提供的代码说明了使用其put()方法将值添加到DoubleBuffer的过程。由于其容量为3,该缓冲区可以存储三个双精度值。该代码尝试插入四个值,但这超过了缓冲区所能容纳的范围,因此会引发BufferOverflowException。此外,代码中还包含了BufferOverflowException和ReadOnlyBufferException 异常处理。在尝试插入后,通过执行rewind()方法将缓冲区的指针重置到开头,然后显示缓冲区的内容。

实施

文件名: BufferPutexample2.java

输出

 
Trying to position the Double in the position externally its bounds
The Exception thrown is given by : java.nio.BufferOverflowException   

示例 3

该代码说明了如何使用DoubleBuffer类,特别是只读缓冲区是如何工作的。它首先分配一个容量为3的DoubleBuffer,然后使用asReadOnlyBuffer()方法创建一个只读副本。代码尝试使用put()方法向只读缓冲区插入值,但由于缓冲区是只读的,因此不起作用并引发ReadOnlyBufferException。捕获并处理了试图修改只读缓冲区的异常。

实施

文件名: BufferPutExample3.java

输出

 
Trying to position the Double in the position externally its bounds
Exception thrown is given by : java.nio.ReadOnlyBufferException   

put(int index, double f)

java.nio.DoubleBuffer 有一个 put(int index, double f) 方法。DoubleBuffer 类使用指定的索引将给定的双精度值写入缓冲区。

语法

参数: 以下参数作为参数传递给此方法

index: 双精度值将在此索引处写入。

f: 要写入的双精度值。

返回值: 此方法返回缓冲区。

异常: 此方法抛出的异常如下

IndexOutOfBoundsException- 如果索引小于缓冲区的限制,或者为负数。

ReadOnlyBufferException- 如果此缓冲区只能读取。

示例 1

该代码演示了put(int index, double value)方法的使用,展示了如何使用DoubleBuffer类。它创建了一个容量为3的DoubleBuffer,然后使用put()方法在特定索引(0、2和1)处插入值。插入值后,使用rewind()方法回绕缓冲区。它将位置重置为零,并允许从开头读取缓冲区。为了检测潜在的错误索引和只读缓冲区更新问题,代码还包含了对IndexOutOfBoundsException和ReadOnlyBufferException的异常处理。

实施

文件名: BufferDoublePutExample1.java

输出

 
The Original DoubleBuffer is given by: [8.5600004196167, 7.860000133514404, 9.609999656677246]   

示例 2

以下代码演示了DoubleBuffer 的使用,重点介绍了用于在指定索引处插入值的put(int index, double value)函数。我们创建了一个容量为3的DoubleBuffer,并在索引0和2处准确插入了元素。当代码尝试在不允许的负索引(-1)处插入值时,会引发IndexOutOfBoundsException。为了展示如何对无效索引使用异常处理,该异常被捕获并处理。尽管在此实例中未触发,但该方法还捕获了潜在的ReadOnlyBufferException以增强健壮性。

实施

文件名: BufferDoublePutExample2.java

输出

 
Trying to put the value at the negative index
The Exception thrown is given by : java.lang.IndexOutOfBoundsException 

示例 3

此代码演示了如何使用asReadOnlyBuffer()函数和DoubleBuffer来生成DoubleBuffer的只读副本。在分配了一个容量为3的DoubleBuffer后,代码尝试使用put(int index, double value)方法将值插入到只读缓冲区。由于缓冲区是只读的,修改缓冲区的尝试会引发ReadOnlyBufferException,并在捕获后进行处理。尽管在此情况下未引发,但代码仍预期IndexOutOfBoundsException。这说明了Java如何正确处理异常以及只读缓冲区的不可变性。

实施

文件名: BufferDoublePutExample3.java

输出

 
Trying to put the value at the negative index
The Exception thrown is by : java.nio.ReadOnlyBufferException   

下一个主题Java中的标记接口