Boolean包装类的equals方法用于比较两个布尔类型的值是否相等,注意这里强调的是包装类中的布尔值是否相等,也就是比较的时候会把包装类中的布尔值取出来进行比较。
这是与Boolean包装类中的compareTo方法和compare方法是相同的,区别在于方法返回的结果,equels返回true或false,compareTo方法和compare方法,返回的是0,1,-1。
需要注意的是equals方法和null比较,返回的都是false,null本身不代表false。
看代码:
public static void main(String[] args) {
Boolean a = new Boolean(true);
Boolean b = new Boolean(false);
Boolean c = new Boolean(true);
boolean d = true;
System.out.println(a.equals(b));
System.out.println(a.equals(c));
System.out.println(a.equals(true));
System.out.println(a.equals(false));
System.out.println(a.equals(null));
System.out.println(b.equals(null));
/* 输出
false
true
true
false
false
false
*/
}
看源码:
/**
* Returns {@code true} if and only if the argument is not
* {@code null} and is a {@code Boolean} object that
* represents the same {@code boolean} value as this object.
*
* @param obj the object to compare with.
* @return {@code true} if the Boolean objects represent the
* same value; {@code false} otherwise.
*/
public boolean equals(Object obj) {
if (obj instanceof Boolean) {
return value == ((Boolean)obj).booleanValue();
}
return false;
}
这里是先对参数进行了类型判断,类型不是Boolean,直接返回false,如果是Boolean类型,那么取这个Boolean的值,进行比较,返回结果。