• 关于equals


    问:euqals()函数是用来做什么的?

    答:equals()函数可以用来检查一个对象与调用这个equals()的这个对象是否相等。

    问:为什么不用“==”运算符来判断两个对象是否相等呢?

    答:虽然“==”运算符可以比较两个数据是否相等,但是要来比较对象的话,恐怕达不到预期的结果。就是说,“==”通过是否引用了同一个对象来判断两个对象是否相等,这被称为“引用相等”。这个运算符不能通过比较两个对象的内容来判断它们是不是逻辑上的相等。

    问:使用Object类的equals()方法可以用来做什么样的对比?

    答:Object类默认的eqauls()函数进行比较的依据是:调用它的对象和传入的对象的引用是否相等。也就是说,默认的equals()进行的是引用比较。如果两个引用是相同的,equals()函数返回true;否则,返回false.

    以上来源于http://www.importnew.com/10433.html

    对应我这个初学者来说,经常看到书上的equals一会是对象引用的比较,一会是值的比较;偶然间看到http://www.importnew.com/10433.html个人对其理解是未覆盖equals的方法是对对象引用的比较,但覆盖了equals是根据覆盖内容对值进行比较。

    数组使用equals:

    第一个数组和第二个数组分别进行比较。由于equals()对数组来说比较的仅仅是引用,而不比较内容,所以x.equals(x)返回true(因为自反性——一个对象与它自己相等),但是x.equals(y)返回false。

    故可以使用java.util.Arrays 类中声明的 static boolean deepEquals(Object[] a1, Object[] a2) 方法来实现,但不能是基本数据类型,要是对象类型(integer、string等)接下来要将数组传入到deepEquals(),进行值的比较就可以了。

  • 相关阅读:
    boost编译中的细节问题
    geos编译问题
    安装pytorch的细节记录
    Qt学习-模仿Qt实现一个colorbutton
    BOOST内存管理-intrusive_ptr
    GEOS使用记录
    matlab添加永久路径
    关于浮点数的取值范围以及精度的问题
    vs2010中使用命令行参数
    sprintf fprintf EOF scanf 的返回值 深拷贝与浅拷贝
  • 原文地址:https://www.cnblogs.com/judylucky/p/3635132.html
Copyright © 2020-2023  润新知