为什么“ 5” .equals(5)的评估结果为true?他们俩都不都是5岁吗?

时间:2018-11-28 14:07:45

标签: java equals

我是Java的新手,我想知道为什么“ 5” .equals(5)评估为true的意思是两个都是5,而且在我眼中似乎是同一回事(它们似乎与我相等),所以为什么不它评估为真吗?

感谢您的帮助:)

3 个答案:

答案 0 :(得分:6)

“ 5”是一个字符串,而5是一个整数,.equals方法还会比较类型

答案 1 :(得分:3)

深入了解该函数的实际作用:

它检查您发送的值是否为String的实例。

public boolean equals(Object value) {
    if (value instanceof String){
       // continue comparing..
    }else{
       return false;
    }
}

如果该值不是String的实例,则该方法将返回false, 在您的情况下,5是Integer的实例。

这就是为什么该方法将返回false的原因。

答案 2 :(得分:0)

 "5".equals(5);

可以写为:

 "5".equals(new Integer(5));

只需说清楚一点:最后,您将String对象与Integer对象进行比较(如果确实有new Integer()调用,或者Integer.valueOf()调用在这里无关紧要)。 String类上没有方法equals(int),因此编译器会为您将int文字5转换为Integer对象(称为装箱)。

事情是:在Java equals()中,方法(通常)考虑到了对象的类型。字符串永远不能等于整数。独立于不同对象“代表”的“内容”。