为什么java中来自同一类的对象不相等?

xxls0lw8  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(379)

这个问题在这里已经有答案了

用.equals()和==运算符比较两个对象(15个答案)
9天前关门了。
大家好,新年快乐。
我是 java 的新手。我已经写了如下代码。当我运行它时,我得到如下输出。
1和2是相同的
1和2相等
为什么不能为其他if语句获得相同的输出?所有3个对象(示例1、示例2和示例3)都派生自类“test”。所有三个都来自同一个来源,类'测试'。因此,不仅1vs 2,1vs 3和2vs 3应该相同/相等。
有什么想法吗。?
我的代码在这里:

public class Test {

    public static void main(String[] args) {

        Test example1 = new Test();
        Test example2 = example1;
        Test example3=new Test();

        if (example1==example2){
            System.out.println("1 and 2 are same");
        }

        if (example1==example3){
            System.out.println("1 and 3 are same");
        }

        if (example2==example3){
            System.out.println("2 and 3 are same");
        }

        if (example1.equals(example2)){
            System.out.println("1 and 2 are equal");
        }

        if (example1.equals(example3)){
            System.out.println("1 and 3 are equal");
        }

        if (example2.equals(example3)){
            System.out.println("2 and 3 are equal");
        }

    }
}
to94eoyn

to94eoyn1#

== 在引用java对象时计算指针相等性。您的两个指针example1和example2指向同一个对象,因此它们相等,而example1和example3指向不同的对象,因此它们不相等。 .equals() 默认情况下,显示相同的行为,并比较内存地址。您可以重写测试类中的方法,使其更智能地比较对象,但它所能做的就是直接运行 == . string是具有 .equals() .

相关问题