源码:这里只是把Integer拿出来,String,Long 都一样
/** * Compares this object to the specified object. The result is * {@code true} if and only if the argument is not * {@code null} and is an {@code Integer} object that * contains the same {@code int} value as this object. * * @param obj the object to compare with. * @return {@code true} if the objects are the same; * {@code false} otherwise. */ public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false; }
比较的时候,第一步都是判断是否是类型相同,不同类型是不可以比较的,所以直接返回false
错误的使用方式:
Long a = Long.valueOf(1);
System.out.println(a.equals(1));// false
正确的方式:第一步就是保证比较的两个数的数据类型一样
System.out.println(a.equals(Long.valueOf(1)));
System.out.println(a.equals(1L));//后边加一个 L 也是可以的