广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州Java Object.Equals方法是什么?_北大青鸟IT计算机学校

作者:邓华发布时间:2021-03-31分类:Java技术浏览:919


导读:之前惠州北大青鸟老师给大家分享了很多关于Java面向对象设计的知识,下面我们一起来学习一下Java Object.Equals方法。

之前惠州北大青鸟老师给大家分享了很多关于Java面向对象设计的知识,下面我们一起来学习一下Java Object.Equals方法。

以下代码显示如何实现equals()和hashCode()方法

class Point {  private int x;  private int y;  public Point(int x, int y) {
   this.x = x;
   this.y = y;
 }  /* implement the equals() method */
 public boolean equals(Object otherObject) {    // Are the same?    if (this == otherObject) {      return true;
   }    // Is otherObject a null reference?    if (otherObject == null) {      return false;
   }    // Do they belong to the same class?    if (this.getClass() != otherObject.getClass()) {      return false;
   }    // Get the reference of otherObject in a SmartPoint variable    Point otherPoint = (Point) otherObject;    // Do they have the same x and y co-ordinates    boolean isSamePoint = (this.x == otherPoint.x && this.y == otherPoint.y);    return isSamePoint;
 }  /*
  * implement hashCode() method of the Object class, which is a requirement
  * when you implement equals() method
  */
 public int hashCode() {    return (this.x + this.y);
 }
}public class Main {  public static void main(String[] args) {
   Point pt1 = new Point(10, 10);
   Point pt2 = new Point(10, 10);
   Point pt3 = new Point(12, 19);
   Point pt4 = pt1;

   System.out.println("pt1 == pt1: " + (pt1 == pt1));
   System.out.println("pt1.equals(pt1): " + pt1.equals(pt1));

   System.out.println("pt1 == pt2: " + (pt1 == pt2));
   System.out.println("pt1.equals(pt2): " + pt1.equals(pt2));

   System.out.println("pt1 == pt3: " + (pt1 == pt3));
   System.out.println("pt1.equals(pt3): " + pt1.equals(pt3));

   System.out.println("pt1 == pt4: " + (pt1 == pt4));
   System.out.println("pt1.equals(pt4): " + pt1.equals(pt4));
 }
}

上面的代码生成以下结果。

Java Object.Equals方法.png

注意

这里是equals()方法的实现的规范。假设x,y和z是三个对象的非空引用。

  • 自反性。表达式x.equals(x)应该返回true。

  • 对称性。如果x.equals(y)返回true,y.equals(x)必须返回true。

  • 传递性。如果x.equals(y)返回true,y.equals(z)返回true,则x.equals(z)必须返回true。

  • 一致性。如果x.equals(y)返回true,它应该保持返回true,直到x或y的状态被修改。如果x.equals(y)返回false,它应该保持返回false,直到x或y的状态被修改。

  • 与空引用的比较:任何类的对象不应等于空引用。表达式x.equals(null)应始终返回false。

与hashCode()方法的关系:如果x.equals(y)返回true,x.hashCode()必须返回与y.hashCode()相同的值。

更多Java资讯关注网站动态,或者来惠州北大青鸟新方舟校区了解一下。


标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表