Java基础之 Boolean包装类的equals方法解析

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的值,进行比较,返回结果。