Javalang包下的 equals 方法比较一个对象是否相等
,它是用来比较两个对象的内容是否相等的。在默认情况下,equals()方法会比较两个对象的地址是否相等,即它们是否是同一个对象。但是,我们可以通过重写equals()方法来改变这种比较方式,使它比较对象的内容是否相等。
一般情况下,我们需要重写equals()方法来比较对象的属性值是否相等。在重写equals()方法时,我们需要遵循以下几个原则:
-
自反性:a.equals(a)应该返回true。
-
对称性:a.equals(b)和b.equals(a)应该返回相同的结果。
-
传递性:如果a.equals(b)返回true,b.equals(c)返回true,那么a.equals(c)也应该返回true。
-
一致性:如果两个对象的属性值没有发生改变,那么多次调用a.equals(b)应该返回相同的结果。
-
非空性:a.equals(null)应该返回false。
例如,我们可以重写String类的equals()方法,使它比较字符串的内容是否相等:
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (obj == this) {
return true;
}
if (obj.getClass() != getClass()) {
return false;
}
String other = (String) obj;
return Arrays.equals(value, other.value);
}
在这个重写的equals()方法中,我们首先判断obj是否为null,如果是就返回false;然后判断obj和当前对象是否是同一个对象,如果是就返回true;接着判断obj的类型是否和当前对象的类型相同,如果不是就返回false;最后比较两个字符串的内容是否相等,如果相等就返回true,否则返回false
原文地址: http://www.cveoy.top/t/topic/fsLK 著作权归作者所有。请勿转载和采集!