当前位置: 首页 > 知识库问答 >
问题:

等于对象中的方法[重复]

索梓
2023-03-14

这是我的代码:

Object a = "1234";
Object b = new Integer("1234");

我知道==表示引用,equals()表示包含。

现在为什么<code>a。等于(b)为假?

它们中的每一个都具有相同的值。

共有3个答案

巢烨
2023-03-14

正如Kugathasan Abimaran已经给出的解释,我将添加这个小代码,您可以自己看到:

System.out.println(a + " might look like " + b + " but " + a.getClass() + " does not equal " + b.getClass());

这将导致:

1234可能看起来像1234,但是java.lang.String类不等于java.lang.Integer类

薄高懿
2023-03-14

您的< code>a是一个< code>Object容器,包含一个< code>String对象,而您的< code>b是一个< code>Object容器,包含一个< code>Integer对象。

当您在< code>a上调用< code>equals()时,它会执行< code>String.equals(),它会发现您的< code>String不等于< code>Integer,无论多少次自动装箱和取消装箱都无法使它等于整数。

时宾实
2023-03-14

因为两者都来自不同的类。a来自String类,b来自整数类。因此,它将返回false,而无需进一步检查实例的内容。

尽管如此,您已经使用Object引用声明了这两个实例,但是,在运行时,当您调用. 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;
}

因此,如果您传递了另一个类的实例,它将返回< code>false。

 类似资料:
  • 为什么上面的代码有编译错误“java:default method equals in interface Table重写java.lang.Object的一个成员”?难道我们不能使用接口默认方法重写hashCode和equals方法吗?假设我在同一个接口中有方法来确定实现这个接口的对象的相等性?

  • 问题内容: 我正在尝试为对象编写一个equals方法,以比较它们的字段 并在相等时返回true。 这可能是什么问题? 问题答案: 由于color 似乎是一个Color,所以是一个类,因此是一个引用类型,这意味着您需要使用它们equals()来比较颜色。 如注释中所述,==用于比较引用类型实际上是比较Java中的内存地址。仅true当它们都 引用内存中的同一对象时,它才会返回。 akf指出,您需要为

  • 根据Java语言规范(8.0版),“接口不继承自对象,而是隐式声明许多与对象相同的方法。”如果您在接口中提供来自Object类的抽象方法,它仍然是一个函数接口。 编译器给出错误:“EqualsInterface不是函数接口:在接口EqualsInterface中找不到抽象方法”。为什么?提前感谢

  • 本文向大家介绍JavaScript基于对象去除数组重复项的方法,包括了JavaScript基于对象去除数组重复项的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript基于对象去除数组重复项的方法。分享给大家供大家参考,具体如下: JavaScript中,去除数组重复项是一个很常用的函数,而且在面试中也很经常被提问到.很多人在面对这个问题的时候,一般都是采用多层for循环

  • 6.2. 基于指针对象的方法 当调用一个函数时,会对其每一个参数值进行拷贝,如果一个函数需要更新一个变量,或者函数的其中一个参数实在太大我们希望能够避免进行这种默认的拷贝,这种情况下我们就需要用到指针了。对应到我们这里用来更新接收器的对象的方法,当这个接受者变量本身比较大时,我们就可以用其指针而不是对象来声明方法,如下: func (p *Point) ScaleBy(factor float64

  • 我无法理解为什么这个程序打印字符串 请帮助我了解如何打印Sting而不是Object