所以我周末正在为高中比赛进行练习,但我无法弄清楚为什么这个问题返回False False
String str = "12";
Integer num = new Integer(12);
Double val = new Double(12.0);
System.out.print(str.equals(num));
System.out.print(" " + num.equals(val));
最佳答案
如果您查看 String
和 Integer
类的 equals
方法,您就会明白原因:
字符串.equals:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
整数.等于:
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
如您所见,因为所有 12
、 "12"
和 12.2
都是不同类的实例
,因此等于
返回false
。
关于Java 中的整数、字符串和 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28778950/