如题,equals比较的不是引用的值吗?这里新创建的course2的值和courseToSelect中的值一模一样,为什么还返回了false。 前面说过 ==
比较的是引用指向的对象地址,equals比较的是值。
你这是把Object和String的equals方法搞混了 String类的equals方法比较的是值,==比较地址 但是Object类的equals方法是比较对象引用是否相等 所以若想比较值需要重写equals方法
因为你new了两个对象,虽然他们俩的内部属性,方法都是一样,但是他们还是两个对象,也就是说在内存里面他开辟了两个空间给这两个对象。这就好比你的家和我的家里面的东西摆放都跟我的家一样,但是门牌号不一样,这就不能说我和你的家是同一家。。。
contains中用的是Course类中继承父类的equals方法,比较的是地址。course2是新new的对象,它开辟了新的地址,并没有add到list中。而course是从list中get出来的,它的地址本来就在list中。
Object类中的equals方法用于检测一个对象是否等于另一个对象。在Object类中,这个方法将判断两个对象是否具有相同的引用。开始,Course类中equals()方法没有重写,所以是继承的Object类的方法。