1. ホーム
  2. java

[解決済み] Java Byte[]配列の比較方法は?

2022-11-12 08:51:09

質問

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));
    }
}

なぜ、すべてfalseと表示されるのかわかりません。

"java ByteArray"を実行すると、答えは "false false"と表示されます。

私はa[]がb[]に等しいと思いますが、JVMは私が間違っていると言っています、なぜですか?

どのように解決するのですか?

使用方法 Arrays.equals() を使うことで、プリミティブ型の値(byteなど)を含む配列の実際の内容を比較することができます。

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

使用方法 Arrays.deepEquals を使ってください。