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));
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么他们都打印假.
当我运行"java ByteArray"时,答案是"false false false false".
我认为a []等于b []但是JVM告诉我我错了,为什么?
Luk*_*asz 174
Arrays.equals()
如果要比较包含基本类型值(如byte)的数组的实际内容,请使用此选项.
System.out.println(Arrays.equals(aa, bb));
Run Code Online (Sandbox Code Playgroud)
使用Arrays.deepEquals
了包含对象数组的比较.
.equals()
由于 byte[] 是可变的,因此只有当它是同一个对象时才被视为存在。
如果你想比较你必须使用的内容Arrays.equals(a, b)
顺便说一句:这不是我设计的方式。;)
因为它们不相等,即:它们是内部具有相同元素的不同数组.
尝试使用Arrays.equals()
或Arrays.deepEquals()
.