使用 equals() 将包装类与基元进行比较会产生奇怪的行为
请考虑以下代码快照。我们用来比较的对象是否有意义地等价?在这里,两个值在有意义地相等,但为什么返回?当我将两个值与运算符进行比较时,它返回。equals()
longWrapper.equals(0)
false
==
true
Long longWrapper = 0L;
long longPrimitive = 0;
System.out.println(longWrapper == 0L); // true
System.out.println(longWrapper == 0); //true
System.out.println(longWrapper == longPrimitive); //true
System.out.println(longWrapper.equals(0L)); //true
System.out.println(longWrapper.equals(0)); //false
System.out.println(longWrapper.equals(longPrimitive)); //true