为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

正在回答

4 回答

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信