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 次 |
| 最近记录: |