public static void main(String[] args) {int i = 0;Long l1 = new Long(0);long l2 = 0l;System.out.println(l1 == i); // trueSystem.out.println(l1.equals(i)); // falseSystem.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}