比较两个字节数组?(爪哇)

2022-08-31 10:17:01

我有一个字节数组,其中包含一个~已知的二进制序列。我需要确认二进制序列是它应该是什么样子的。除了 之外,我还尝试过,但都没有奏效。.equals==

byte[] array = new BigInteger("1111000011110001", 2).toByteArray();
if (new BigInteger("1111000011110001", 2).toByteArray() == array){
    System.out.println("the same");
} else {
    System.out.println("different'");
}

答案 1

在您的示例中,您有:

if (new BigInteger("1111000011110001", 2).toByteArray() == array)

处理对象时,在java中比较参考值。您正在检查对 返回的数组的引用是否与 中保存的引用相同,这当然永远不会是真的。此外,数组类不会重写,因此行为也仅比较引用值。==toByteArray()array.equals()Object.equals()

为了比较两个数组的内容Arrays 类提供了静态数组比较方法

byte[] array = new BigInteger("1111000011110001", 2).toByteArray();
byte[] secondArray = new BigInteger("1111000011110001", 2).toByteArray();
if (Arrays.equals(array, secondArray))
{
    System.out.println("Yup, they're the same!");
}

答案 2

查看静态 java.util.Arrays.equals() 系列方法。有一个可以完全按照你想要的方式做。


推荐