Pfeffer 2017-08-12 13:23 采纳率: 50%
浏览 798
已采纳

equals 方法 java核心技术卷一

 public boolean equals(Object otherObject)
   {
      // a quick test to see if the objects are identical
      if (this == otherObject) return true;

      // must return false if the explicit parameter is null
      if (otherObject == null) return false;

      // if the classes don't match, they can't be equal
      if (getClass() != otherObject.getClass()) return false;

      // now we know otherObject is a non-null Employee
      Employee other = (Employee) otherObject;

      // test whether the fields have identical values
      return name.equals(other.name) && salary == other.salary && hireDay.equals(other.hireDay);
   }

为了防备name和hireDay可能为null的情况,需要使用Objects.equals方法.如果两个参数是null,Objects.equals(a,b)调用将返回ture; 如果其中一个参数为null, 则返回false;否则,如果两个参数都不为null,则调用a.equals(b).

对上述程序,有以下问题:
1. 以我目前对于方法和类的理解, public boolean equals(Object otherObject),返回的是一个布尔类型的,括号里面是声明一个otherObject, 这个Objects.equals(a,b)是哪儿来的, 不符合 public boolean equals(Object otherObject) 类型.

  1. 上述一段话中,还提到了Objects.equals(a,b) 对于判断参数是否是null的情况. 这个方法是怎么实现来判断被比较的两个参数是否都为null,或者其中一个是null?
  • 写回答

4条回答 默认 最新

  • JPF1024 2017-08-13 03:33
    关注

    手机回复。

    如果你用eclipse的话,可以按住ctrl,点击equals方法名,可以看到源码。

    关于equals其实就是对比两个对象是否一致,Object里面只是一个基础实现,其子类可以对其进行重写。

    对于==和equals的区别,简单解释就是==比较地址,equals比较地址中的内容。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?