我有一个像这样的测试类:
public class CompareObjects {
public static class Obj {
public int i;
public Obj(int i) {
this.i = i;
}
}
public static void main(String[] args) {
Obj o1 = new Obj(0);
Obj o2 = new Obj(0);
if(o1 == o2) {
System.out.println("Equal");
}else{
System.out.println("Not equal");
}
}
}
我虽然测试会返回“Equal”,但事实并非如此。为什么Java不认为具有相同组件的两个对象不相同?我在这里做错了吗?我有一种感觉,当我开始学习 Java 时,我完全忽略了一些东西。
此外,我使用 equals() 方法对两者进行了测试,得到了相同的结果。我提出这个问题的原因是我希望能够使用 contains() 方法测试 ArrayList 以查看一个对象是否具有与另一个对象相同的组件,因此是否相等。有任何想法吗?