首页 > 解决方案 > equals() 方法和对象比较

问题描述

我正在学习java的基础知识并看到equals()方法并编写了这段代码

public class EqualsTest {
public static void main(String[] args) {
    String str = new String("this");
    String str2 = new String("this");

    Object obj1 = new Object(6);
    Object obj2 = new Object(6);

    System.out.println(str == str2);
    System.out.println(str.equals(str2));

    System.out.println(obj1 == obj2);
    System.out.println(obj1.equals(obj2));
    }
}

和这个。

public class Object {
public int num;

public Object(int num) {
    this.num = num;
    }

}

当我运行代码时,我得到的结果是

false
true
false
false

我可以理解为什么我得到前两个结果。(假和真)'==' 运算符比较 str 和 str2 是否引用同一个实例,而 equals() 方法比较内部的实际值。

但是我不明白为什么我两个都错了

obj1 == obj2;
obj1.equals(obj2);

我想既然他们都有价值6,

obj1.equals(obj2);

结果,这条线应该给出真实的结果。

有人可以解释一下吗?

谢谢你。

标签: javaequalsequals-operator

解决方案


推荐阅读