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

为什么直接用equals()比较对象course与course2还是false?

我用

Course course = new Course("1" , "高数") ;

Course course2 = new Course(course.id , course.name) ;

System.out.println( course.equals(course2));

为什么输出还是false?

两个对象内容相等不是true吗?而且就算用 == 比较内存地址的话也应该指向相同的字符串地址呀?

谢谢大家~

正在回答

3 回答

用 == 比较内存地址的话是不相同的,每创建一个对象,内存栈就会为其分配一个新的 内存地址,

Course course = new Course("1" , "高数") ; 何以明显看到course 的两个参数都是String类型,

而 course.id 与 course.name 应该是 内存地址吧,

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

LeePaddy 提问者

非常感谢!
2016-09-04 回复 有任何疑惑可以回复我~

我的理解,equals默认也是比较地址的,重写之后才比较内容

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

因为course和course2是两个不同的对象,所以不可能相等

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

慕数据5250849

不是说equals()比较的是两个的内容是否相等吗,而"=="才是比较两个对象,何解?
2016-05-21 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么直接用equals()比较对象course与course2还是false?

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