问答详情
源自:6-1 学生选课---判断 List 中课程是否存在

为什么直接用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吗?而且就算用 == 比较内存地址的话也应该指向相同的字符串地址呀?

谢谢大家~

提问者:LeePaddy 2016-05-08 10:41

个回答

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

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

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

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

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

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

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

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