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

来源:6-1 学生选课---判断 List 中课程是否存在

LeePaddy

2016-05-08 10:41

我用

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

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

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

为什么输出还是false?

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

谢谢大家~

写回答 关注

3回答

  • Aliol
    2016-08-08 17:29:58
    已采纳

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

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

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

    LeePad...

    非常感谢!

    2016-09-04 10:08:30

    共 1 条回复 >

  • 精慕门7137578
    2016-07-09 08:15:47

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

  • 痴心妄想06
    2016-05-08 13:43:27

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

    慕数据525...

    不是说equals()比较的是两个的内容是否相等吗,而"=="才是比较两个对象,何解?

    2016-05-21 13:58:48

    共 1 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题