Java:equals方法详解

2021-03-27 15:26

阅读:693

标签:OLE   object类   public   java   bsp   创建对象   except   方法   定义   

在Java库中包含150多个 equals 方法的实现,包括使用 instanceof 检测、调用 getClass 检测、捕获 ClassCastException 或者什么也不做。

String类中的 equals() 方法可以通过检测两个字符串的引用、类型、长度、字符等是否相同,来判断两个字符串是否相等。

切记:不要用 == 来比较两个字符串, == 只能确定两个字符串是否在一个位置。如果通过 new 的方式给String赋值的话,就可能会出错。

Object这个始祖类中的 equals 方法用于检测一个对象是否等于另一个对象,主要是判断两个对象是否有相同的引用。如果我们在子类中定义 equals 方法时,会先调用超类的 equals 方法,失败则不能相等;如果超类检测所有的域都相等,在比较子类的实例域。

 

我们平时遇到的 equals 方法比较的两种情况:

  • 在没有重写 Object的 equals 方法时,我们使用 equals 方法,判断两个对象是否相等就相当于 “==”。
  • 在重写 equals 后,通常,我们会将其复写成:两个对象内容相同时,返回true,否则就是false。

因此,博主编写了一个尽可能显得完美的 equals 方法:

 

 1 public boolean equals(Object otherObject){
  2         //查看参数是否为空,如果为空,返回false
  3         if(otherObject == null) return false;
  4 
  5         //查看两个对象是否有同一个引用
  6         if(this != otherObject) return false;//如果没有重写Object类中的equals方法 时,判断两个对象是否相等就等同于 “==”
  7 
  8         //查看两个对象是否属于同一个类
  9         if(getClass() != otherObject.getClass()) return false;
 10 
 11         //判断对象是不是由我们了解的那个类创建的对象
 12         //instanceof是Java中的二元运算符,左边是对象,右边是类;当对象是右边类或子类所创建对象时,返回true;否则,返回false。
 13         if(!(otherObject instanceof ClassName)) return false;
 14 
 15         //将otherObject强行转换为相应的类类型,对需要比较的域进行比较。 == 比较基本类型域, 使用equals比较对象域。
 16         //如果所有的域都相等,则返回true,否则就是false
 17         ClassName other.field1 && Objects.equals() = (ClassName)otherObject;
 18         return field1 == other.field1
 19                 && Objects.equals(field2,other.field2)
 20                 && ...;
 21 
 22     }

 

 

 

博主是个初学者,有些不足之处还请指出,谢谢。

 

Java:equals方法详解

标签:OLE   object类   public   java   bsp   创建对象   except   方法   定义   

原文地址:https://www.cnblogs.com/mysmeng/p/13657743.html


评论


亲,登录后才可以留言!