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条)

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀