course2用equals比较为什么出来的是false?

来源:6-1 学生选课---判断 List 中课程是否存在

Yeee

2019-03-14 16:49

如题,equals比较的不是引用的值吗?这里新创建的course2的值和courseToSelect中的值一模一样,为什么还返回了false。 前面说过 ==

 比较的是引用指向的对象地址,equals比较的是值。

写回答 关注

4回答

  • qq_Pinocchio_1
    2019-10-15 16:38:50

    你这是把Object和String的equals方法搞混了   String类的equals方法比较的是值,==比较地址   但是Object类的equals方法是比较对象引用是否相等  所以若想比较值需要重写equals方法

  • AlexanderW
    2019-05-02 21:49:46

    因为你new了两个对象,虽然他们俩的内部属性,方法都是一样,但是他们还是两个对象,也就是说在内存里面他开辟了两个空间给这两个对象。这就好比你的家和我的家里面的东西摆放都跟我的家一样,但是门牌号不一样,这就不能说我和你的家是同一家。。。

  • 慕沐6598592
    2019-04-16 22:18:30

    contains中用的是Course类中继承父类的equals方法,比较的是地址。course2是新new的对象,它开辟了新的地址,并没有add到list中。而course是从list中get出来的,它的地址本来就在list中。

  • 慕婉清3254237
    2019-03-14 20:13:05

    Object类中的equals方法用于检测一个对象是否等于另一个对象。在Object类中,这个方法将判断两个对象是否具有相同的引用。开始,Course类中equals()方法没有重写,所以是继承的Object类的方法。

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题