博主java基础不好,今天用到ArrayList的contains的方法的时候,我发现尽管我的两个对象的实例内容相同(当然两个实例的ID号并不相同),但是contains也不能判true
public class TestClass{
int a;
int b;
public TestClass(int a, int b){
this.a = a;
this.b = b;
}
}
TestClass a = new TestClass(1, 1);
TestClass b = new TestClass(1, 1);
ArrayList <TestClass>list = new <TestClass>ArrayList();
list.add(a);
System.out.print(list.contains(b);
TestClass是自己定义的类
上面的代码显示的会是false;
为什么内容一样会是false,博主去看了一下contains的源码发现是这样写的:
调用了父类object的equals来比较于是我又去看了equals的源码