zoukankan      html  css  js  c++  java
  • Java复习笔记5--equals方法总结

    equals方法总结

    超类Object中有这个equals()方法,该方法主要用于比较两个对象是否相等。

    我们知道所有的对象都拥有标识(内存地址)和状态(数据),同时“==”比较两个对象的的内存地址,所以说使用Object的equals()方法是比较两个对象的内存地址是否相等,即若object1.equals(object2)为true,则表示equals1和equals2实际上是引用同一个对象。虽然有时候Object的equals()方法可以满足我们一些基本的要求,但是我们必须要清楚我们很大部分时间都是进行两个对象的比较,这个时候Object的equals()方法就不可以了,实际上JDK中,String、Math等封装类都对equals()方法进行了重写。都是内容比较

    在java中进行比较,我们需要根据比较的类型来选择合适的比较方式:

     1) 对象域,使用equals方法 。 
       2) 类型安全的枚举,使用equals或== 。 
      3) 可能为null的对象域 : 使用 == 和 equals 。 
     4) 数组域 : 使用 Arrays.equals 。 
     5) 除float和double外的原始数据类型 : 使用 == 。 
     6) float类型: 使用Float.foatToIntBits转换成int类型,然后使用==。  
      7) double类型: 使用Double.doubleToLongBit转换成long类型,然后使用==。

    6,7不用equals有2点原因:

    However, there are two exceptions:If f1 and f2 both representFloat.NaN, then the equals method returnstrue, even though Float.NaN==Float.NaNhas the value false.If <code>f1 represents +0.0f whilef2 represents -0.0f, or viceversa, the equal test has the valuefalse, even though 0.0f==-0.0fhas the value true.

    在equals()中使用getClass进行类型判断

    我们在覆写equals()方法时,一般都是推荐使用getClass来进行类型判断,不是使用instanceof。我们都清楚instanceof的作用是判断其左边对象是否为其右边类的实例,返回boolean类型的数据。可以用来判断继承中的子类的实例是否为父类的实现

     

  • 相关阅读:
    springmvc log4j 配置
    intellij idea maven springmvc 环境搭建
    spring,property not found on type
    intellij idea maven 工程生成可执行的jar
    device eth0 does not seem to be present, delaying initialization
    macos ssh host配置及免密登陆
    centos7 搭建 docker 环境
    通过rest接口获取自增id (twitter snowflake算法)
    微信小程序开发体验
    gitbook 制作 beego 参考手册
  • 原文地址:https://www.cnblogs.com/zhouQing17/p/5847200.html
Copyright © 2011-2022 走看看