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

我用JDK9.0,为什么testListContains() 方法运行出来的结果不同

我用JDK9.0,为什么testListContains() 方法运行出来的结果不同: 

取得课程:C语言 备选课程是否包含课程:C语言,true 新创建课程:C语言 备选课程中是否包含课程:C语言,true

http://img4.mukewang.com/5aab24fd00013a0610650265.jpg

http://img1.mukewang.com/5aab24ec0001e54603480103.jpg

提问者:craxy 2018-03-16 09:59

个回答

  • 969999666696
    2018-07-31 09:43:08

    说得好!

  • craxy
    2018-03-16 11:24:27

    以上答案采纳,混个积分,嘻嘻

  • craxy
    2018-03-16 11:21:26

    自己疏忽了!抱歉!

    后来看后续章节已经重写了course类的equals()方法,而contains()方法实际内部调用了equals()方法。重新运行时忘记了之前已经重写了course类的equals()方法。其中涉及equals()方法与"=="的区别,百度看到知乎大神的解答觉得不错,放在下边。就当是重新复习了下contains以及equals的重写吧

    知乎大神关于equals()方法与"=="的区别解析如下:

    equals()方法与"=="区别在于前者是方法,后者是操作符。由于java不支持操作符重载(overlaoding),

    "=="的行为对于每个对象来说与equals()是完全相同的,但是equals()可以基于业务

    规则的不同而重写(overlaoding)。另一需要注意的不同是"=="习惯用于原生(primitive)

    类型之间的比较,而equals()仅用于对象之间的比较。