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

equals里面的equals为啥work?

重写equals方法,最后一个if判断:if (this.name.equals(cr.name)) 这里用到的equals方法是原始的么?为什么这两个名字的判断会给出true的可能,按原始定义,两个不一样的对象不是应该返回false么,即使内容一样?

提问者:红袖侍读 2016-06-14 01:13

个回答

  • helloworld2008
    2016-06-22 13:36:22
    已采纳

    你的理解一部分对,一部分不恰当。

    其实就是String是简单的引用类型,所以用equals时,程序内部知道去判断两个字符串中的一系列字符是否一样,从而得到判断结果,但是遇到一个复杂点的对象,计算机不知道我们认定的“相同”的判断规则,所以需要我们覆写这个equals方法。想想如果各种类型都能够判断的话,计算机需要做的工作太复杂了。比如一个对象有十个属性,他就需要去分别比较每个属性的值,如果每个属性又都是复杂的类型,那比较工作就一套嵌一套,没完没了了。效率是不是很低呢?所以根据用户需求自己去覆写是最好的了。

    equals:判断值是否相同。

      ==    :判断地址是否相同。

    对于String类型的,如果你利用他的构造函数创建String对象,即使两个值相同,用==也是不相等滴!他们两个本质上是不一样的奥~

  • kingdompeak
    2016-06-15 20:56:22

    是原始的
    对象之间的判断是用==号,而equals方法是用来判断字符串中的内容是否相等。

    不知对否,第一次回答问题。