大家好,新年快乐。
我是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()
自定义实现的类的示例。