老师我想问下equasl方法的问题

来源:4-7 自由编程

qq_酒半熏_0

2020-02-14 11:27:23

已经在Song类中重写了hashCode和equals方法

  1. 在Song类中重写equals方法中return (song.getId().equals(id))&&(song.getName().equals(name))&&(song.getSinger().equals(singer));和return (song.getId()==id)&&(song.getName()==name)&&(song.getSinger()==singer);两种写法有什么区别?

  2. 我用==的方式,在测试Song的方法中用增强型for循环遍历一个Set集合的播放列表用equals与一个和此集合中属性一样的元素的对象进行比较返回值有一个是true其他是false。为什么在主方法中写向主播放列表中添加歌曲时同样是Set集合、equals方法,比较两个相同属性的对象返回值却是false呢?将重写的equals方法中的return语句中==换成equals在主方法中写向主播放列表中添加歌曲时同样是Set集合、equals方法,比较两个相同属性的对象返回值就是true呢?

写回答

1回答

好帮手慕小脸

2020-02-14

同学你好,

  1、==如果等号两端是对象  则比较的是地址

     equals两端比较的是对象  则会比较对象的内容

  2、同理,同学可参考第一问来理解。

建议同学下次贴出代码,避免老师不能理解同学所要问的问题。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~


0
hq_酒半熏_0
h 老师你回答的第一点我明白,第二点我再开个提问,回复里不好复制代码。
h020-02-14
共1条回复

0 学习 · 11489 问题

查看课程