为什么JAVA中同一类的对象不相等



大家好,新年快乐。

我是JAVA的新手。我写了一个代码如下。当我运行它时,我得到以下输出。


1和2是相同的

1和2是相等的


为什么我不能为其他if语句获得相同的输出?所有3个对象(example1、example2和example3(都派生自类"Test"。所有3个都来自同一个来源,类别为"测试"。因此,不仅1对2,1对3和2对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");
}

}
}

==在引用Java对象时计算指针相等性。你的两个指针example1和example2指向同一个对象,所以它们相等,而example1和sample3指向不同的对象,所以他们不相等。

默认情况下,.equals()表现出相同的行为,并比较内存地址。您可以覆盖Test类中的方法,使其更智能地比较对象,但它所能做的就是运行==。String是一个具有.equals()自定义实现的类的示例。

最新更新