DoubleBuffer equals() method in Java with Examples

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

两个双精度缓冲区相等的充要条件是,它们的元素类型相同,剩余元素数量相等,并且在不考虑其起始位置的情况下,这两个元素序列逐点等效。java.nio.DoubleBuffer 类有一个 equals() 方法。要确定一个缓冲区是否等于另一个对象,请使用 DoubleBuffer 类。

如果 (a == b) || (Double.isNaN(a) && Double.isNaN(b)),则此函数认为两个双精度元素 a 和 b 等效。与 Double.equals(Object) 不同,-0.0 和 +0.0 被视为相等。不存在其他类型的对象等同于双精度缓冲区。

语法

参数:需要与此缓冲区进行比较的对象称为 obj,它作为参数传递给此方法。

返回值:当且仅当给定对象等于此缓冲区时,该方法才返回 true。

示例 1

此代码说明了如何比较两个 DoubleBuffer 实例以确定它们是否相等。doublebuff1 和 doublebuff2 这两个 DoubleBuffer 对象使用相同的容量进行构造。将相同的数值输入两个缓冲区,然后重新设置(rewound)它们以返回到零位置。在显示了它们的内​​容后,使用 equals() 方法对它们进行比较。equals() 函数确定缓冲区的内​​容、位置、限制和标记是否相等。

实施

文件名: BufferEqualExample1.java

输出

 
The DoubleBuffer 1 is given by : [9.52, 0.0, 0.0, 0.0, 8.210000038146973, 0.0, 0.0, 0.0, 0.0, 0.0]
The DoubleBuffer 2 is given by: [9.52, 0.0, 0.0, 0.0, 8.210000038146973, 0.0, 0.0, 0.0, 0.0, 0.0]
Both Doublebuffers are equal   

示例 2

在此代码中,生成了两个 DoubleBuffer 对象,doublebuff1 的容量为 10,doublebuff2 的容量为 5。将相同的数值输入每个缓冲区,然后重新连接它们。尽管 doublebuff1 和 doublebuff2 在其各自的限制(limit)内具有相同的信息,但 doublebuff1 的容量大于 doublebuff2。因此,它们的内部状态不同。使用 equals() 方法对这些缓冲区进行比较,该方法会检查以下区域的等效性:内​​容、位置、限制和标记。由于容量不同,因此不认为缓冲区相等,输出也显示了这种差异。

实施

文件名: BufferEqualExample2.java

输出

 
The DoubleBuffer 1 is given by : [9.52, 0.0, 0.0, 0.0, 8.210000038146973, 0.0, 0.0, 0.0, 0.0, 0.0]
The DoubleBuffer 2 is given by: [9.52, 0.0, 0.0, 0.0, 8.210000038146973]
Both Doublebuffers are not equal