我正在研究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);
此行应该给出正确的结果。
有人可以解释一下吗?
谢谢。