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

coursesToSelect.contains(course2)

对第一次比较有疑问。
contains方法相当于遍历List进行equals比较,如果是String类型,比较的是内容而不是地址,为什么这里Course类型的equals比较的内容相同,contains返回值为false呢?

正在回答

1 回答

对于equals方法,注意:equals方法不能作用于基本数据类型的变量

    如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;

    诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

而contains中的元素比较的应该是obj类型的,系统并没有重写equals方法,比较的是地址值


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

慕尼诗

那意思就是最后的那个this.name.equals(course.name)其实调用的就是string里重写的equals方法咯,直接比较内容,所以可以了,是这个样子么?
2019-04-13 回复 有任何疑惑可以回复我~
#2

jorry 回复 慕尼诗

字符串实现的equals()先判断对象是否为同一个,还判断了字符串内容是否一样,请看源码,在这里指的就是字符串实际内容。
2019-06-21 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

coursesToSelect.contains(course2)

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