老师我想问下equasl方法的问题
已经在Song类中重写了hashCode和equals方法
在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);两种写法有什么区别?
我用==的方式,在测试Song的方法中用增强型for循环遍历一个Set集合的播放列表用equals与一个和此集合中属性一样的元素的对象进行比较返回值有一个是true其他是false。为什么在主方法中写向主播放列表中添加歌曲时同样是Set集合、equals方法,比较两个相同属性的对象返回值却是false呢?将重写的equals方法中的return语句中==换成equals在主方法中写向主播放列表中添加歌曲时同样是Set集合、equals方法,比较两个相同属性的对象返回值就是true呢?
正在回答
同学你好,
1、==如果等号两端是对象 则比较的是地址
equals两端比较的是对象 则会比较对象的内容
2、同理,同学可参考第一问来理解。
建议同学下次贴出代码,避免老师不能理解同学所要问的问题。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星