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

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

已经在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回答

同学你好,

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

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

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

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

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


  • qq_酒半熏_0 提问者 #1
    老师你回答的第一点我明白,第二点我再开个提问,回复里不好复制代码。
    2020-02-14 17:21:02
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师