Long的equals和相同数值的Integer比较为何为false

    Integer i = new Integer(42);
    Long b 
= new Long(42);
    System.out.println(b.equals(i));
运行结果为
false

我们查看一下Long.equals的源代码
public   boolean  equals(Object obj)  ... {
    
if (obj instanceof Long) ...// 这里是关键
      return value == ((Long) obj).longValue();
    }

    
return false;
  }
 
如果传入的类型不是Long,那么全部返回false,这就是原因了






你可能感兴趣的:(Long的equals和相同数值的Integer比较为何为false)