这个问题在这里已经有答案了:
用.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");
}
}
}
1条答案
按热度按时间to94eoyn1#
==
在引用java对象时计算指针相等性。您的两个指针example1和example2指向同一个对象,因此它们相等,而example1和example3指向不同的对象,因此它们不相等。.equals()
默认情况下,显示相同的行为,并比较内存地址。您可以重写测试类中的方法,使其更智能地比较对象,但它所能做的就是直接运行==
. string是具有.equals()
.