public static void main(String[] args) {
int i = 0;
Long l1 = new Long(0);
long l2 = 0l;
System.out.println(l1 == i); // true
System.out.println(l1.equals(i)); // false
System.out.println(l2 == i); // true
}
为什么 l1.equals(i)
的结果为 false?
因为其 equals源码为:
public boolean equals(Object obj) {
if (obj instanceof Long) { // 这里判断,传过来的对象是不是 Long类型
return value == ((Long)obj).longValue();
}
return false; // 如果入参不是 Long类型,会直接返回 false
}