Java:equals方法详解
2021-03-27 15:26
标签:OLE object类 public java bsp 创建对象 except 方法 定义 在Java库中包含150多个 equals 方法的实现,包括使用 instanceof 检测、调用 getClass 检测、捕获 ClassCastException 或者什么也不做。 String类中的 equals() 方法可以通过检测两个字符串的引用、类型、长度、字符等是否相同,来判断两个字符串是否相等。 切记:不要用 == 来比较两个字符串, == 只能确定两个字符串是否在一个位置。如果通过 new 的方式给String赋值的话,就可能会出错。 Object这个始祖类中的 equals 方法用于检测一个对象是否等于另一个对象,主要是判断两个对象是否有相同的引用。如果我们在子类中定义 equals 方法时,会先调用超类的 equals 方法,失败则不能相等;如果超类检测所有的域都相等,在比较子类的实例域。 因此,博主编写了一个尽可能显得完美的 equals 方法: 博主是个初学者,有些不足之处还请指出,谢谢。 Java:equals方法详解 标签:OLE object类 public java bsp 创建对象 except 方法 定义 原文地址:https://www.cnblogs.com/mysmeng/p/13657743.html
我们平时遇到的 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 }