本文基于JDK1.8学习与分析Boolean源码。
public final class Boolean implements java.io.Serializable,Comparable<Boolean>
布尔类将对象中的基元类型boolean
的值进行包装。 类型为Boolean
的对象包含一个单一字段,其类型为boolean
。此外,该类还提供了许多将boolean
转换为String
和String
转换为boolean
,以及在处理boolean
时有用的其他常量和方法。
package java.lang;
/**
* @author Arthur van Hoff
* @since JDK1.0
*/
public final class Boolean implements java.io.Serializable,
Comparable<Boolean>
{
/**
* Boolean对象对应于原始值 true和false
*/
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
/**
* 获取包装类对应的Class对象
*/
@SuppressWarnings("unchecked")
public static final Class<Boolean> TYPE = (Class<Boolean>) Class.getPrimitiveClass("boolean");
private final boolean value;
private static final long serialVersionUID = -3665804199014368530L;
/**
* 有参构造方法
*/
public Boolean(boolean value) {
this.value = value;
}
/**
* 参数为字符串的构造方法
*/
public Boolean(String s) {
this(parseBoolean(s));
}
/**
* 字符串转boolean
*/
public static boolean parseBoolean(String s) {
return ((s != null) && s.equalsIgnoreCase("true"));
}
/**
* 返回Boolean对象的boolean值
*/
public boolean booleanValue() {
return value;
}
/**
* 返回一个Boolean指定的boolean值的Boolean实例
*/
public static Boolean valueOf(boolean b) {
return (b ? TRUE : FALSE);
}
/**
* 返回一个Boolean指定的String值的Boolean实例
*/
public static Boolean valueOf(String s) {
return parseBoolean(s) ? TRUE : FALSE;
}
/**
* boolean转String
*/
public static String toString(boolean b) {
return b ? "true" : "false";
}
/**
* Boolean转String
*/
public String toString() {
return value ? "true" : "false";
}
/**
* boolean的哈希码
*/
@Override
public int hashCode() {
return Boolean.hashCode(value);
}
/**
* 给定boolean的哈希码
*/
public static int hashCode(boolean value) {
return value ? 1231 : 1237;
}
/**
* 将此对象与指定对象进行比较
*/
public boolean equals(Object obj) {
if (obj instanceof Boolean) {
return value == ((Boolean)obj).booleanValue();
}
return false;
}
/**
* 返回true当且仅当由参数命名的系统属性存在且等于字符串"true"
*/
public static boolean getBoolean(String name) {
boolean result = false;
try {
result = parseBoolean(System.getProperty(name));
} catch (IllegalArgumentException | NullPointerException e) {
}
return result;
}
/**
* 将此 Boolean实例与另一个实例进行比较
*/
public int compareTo(Boolean b) {
return compare(this.value, b.value);
}
/**
* 比较两个给定boolean类型数据
*/
public static int compare(boolean x, boolean y) {
return (x == y) ? 0 : (x ? 1 : -1);
}
/**
* 对给定的两个boolean类型做逻辑与操作
*/
public static boolean logicalAnd(boolean a, boolean b) {
return a && b;
}
/**
* 对给定的两个boolean类型做逻辑或操作
*/
public static boolean logicalOr(boolean a, boolean b) {
return a || b;
}
/**
* 对给定的两个boolean类型做逻辑亦或操作
*/
public static boolean logicalXor(boolean a, boolean b) {
return a ^ b;
}
}