我是Java的新手,我想知道为什么“ 5” .equals(5)评估为true的意思是两个都是5,而且在我眼中似乎是同一回事(它们似乎与我相等),所以为什么不它评估为真吗?
感谢您的帮助:)
答案 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()
中,方法(通常)考虑到了对象的类型。字符串永远不能等于整数。独立于不同对象“代表”的“内容”。