Sne*_*tel 15 java equals wrapper
考虑下面的代码捕捉.我们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
Run Code Online (Sandbox Code Playgroud)
Kon*_*kov 18
longWrapper.equals(0)
返回false
,因为0
是自动装箱Integer
,而不是Long
.由于两种类型不同,因此.equals()
返回false
.
同时,longWrapper == 0
是true
因为该longwrapper
值未拆箱0
,并且0 == 0
没有考虑实际的基元类型.
归档时间: |
|
查看次数: |
7120 次 |
最近记录: |