Java 中的整数、字符串和 double

标签 java string int boolean

所以我周末正在为高中比赛进行练习,但我无法弄清楚为什么这个问题返回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)); 

最佳答案

如果您查看 StringInteger 类的 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/

相关文章:

java - 如何按字符串的最后一点拆分?

c++ - 与size_t比较,返回int?

c++ - 将 uint64_t 截断为 uint8_t[i] 时是否应该使用位掩码?

java - 什么是NullPointerException,我该如何解决?

Java编译器给出一个奇怪的错误

作为参数传递后字符指针损坏

python - 我如何断言该参数仅包含 Python 中列出的整数

java - Spring - 动态创建 JMSTemplates

java - 使用 DOM 解析 XML : Java

C++刽子手游戏