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

equals递归调用问题

为什么equals方法重写中要在调用equals而不用==

提问者:我喜欢Love 2015-04-28 16:31

个回答

  • yong_a
    2015-04-30 10:27:16
    已采纳

    Object类中的方法,适合所有子类。

    1.toString()方法

    在Object类里面定义了toString()方法的时候返回的对象的哈希code码(对象地址字符串)

    可以通过重写toString()方法表示出对象的属性(source菜单栏下的Generate toString())

    2.equals()方法(source菜单栏下的Generate hashCode()and equals())

    比较的是对象的引用是否指向同一块内存地址

    重写equals()方法以后可以比较两个不同内存地址的对象是否相等。

    ==:

    * 如果操作的是基本数据类型的数据,比较的数值是否相等

    * 如果操作的是引用数据类型的数据,比较的地址值是否相等

    equals:

    * 只能够比较引用数据类型的数据, 默认比较的是地址值是否相等

    * 默认的比较方式通常来说是没有意义的

    * 我们需要重写此方法,让它来比较两个对象中的内容是否一致 


    String对象继承自Object,并且对equals()方法进行了重写

    String s1 = new String("Hello");

    String s2 = new String("Hello");


    System.out.println(s1 == s2);

    System.out.println(s1.equals(s2));


    以上代码段的打印结果是:


    false

    true


  • 没有马甲线的安琪拉
    2015-04-28 18:10:05

    可以再认真看一下字符串讲解的章节,对于字符串"=="和"equals"的作用不同