如何比较Java Byte []数组?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (553)
public class ByteArr {

    public static void main(String[] args){
        Byte[] a = {(byte)0x03, (byte)0x00, (byte)0x00, (byte)0x00};
        Byte[] b = {(byte)0x03, (byte)0x00, (byte)0x00, (byte)0x00};
        byte[] aa = {(byte)0x03, (byte)0x00, (byte)0x00, (byte)0x00};
        byte[] bb = {(byte)0x03, (byte)0x00, (byte)0x00, (byte)0x00};

        System.out.println(a);
        System.out.println(b);
        System.out.println(a == b);
        System.out.println(a.equals(b));

        System.out.println(aa);
        System.out.println(bb);
        System.out.println(aa == bb);
        System.out.println(aa.equals(bb));
    }
}

我不知道为什么他们都打印错误。

当我运行“java ByteArray”时,答案是“false false false false”。

我认为a []等于b [],但JVM告诉我我错了,为什么?

提问于
用户回答回答于

Arrays.equals()如果您想比较包含原始类型值(如字节)的数组的实际内容,请使用此选项。

System.out.println(Arrays.equals(aa, bb));

使用Arrays.deepEquals了包含对象数组的比较。

用户回答回答于

因为它们不相等,即:它们是内部具有相同元素的不同数组。

尝试使用Arrays.equals()Arrays.deepEquals()

扫码关注云+社区

领取腾讯云代金券