考虑下面的代码捕捉。我们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
longWrapper.equals(0)
返回false
,因为0
已自动装箱到Integer
,而不是Long
。由于两种类型不同,所以.equals()
返回false
。
同时,longWrapper == 0
is是true
,因为该longwrapper
值未对装箱0
,0 == 0
而未考虑实际的原始类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句