arj*_*soh 2 java integer equals long-integer
我没有java编译器,我想检查如何处理对象与基元java的比较Integer.有人可以确认以下比较的结果是正确的:
Integer a = 500;
long b = 500;
a == b //-> false
a.equals(b) //-> true
Run Code Online (Sandbox Code Playgroud)
通常情况下,在java的第一种比较中Boxing,在第二种Unboxing比较中,比较原始值吗?
看我的结果
Integer a = 500;
long b = 500;
System.out.println(a == b);
System.out.println(a.equals(b));
Run Code Online (Sandbox Code Playgroud)
产量
true
false
Run Code Online (Sandbox Code Playgroud)
这是因为第一次比较使用拆箱
b == a.intValue()
Run Code Online (Sandbox Code Playgroud)
产生真实,因为在Java 500L == 500是真的.
第二次比较使用拳击
a.equals(Long.valueOf(b))
Run Code Online (Sandbox Code Playgroud)
这会产生错误,因为a和b是不同类的实例.请参阅Integer.equals impl:
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
Run Code Online (Sandbox Code Playgroud)