Boolean
是 Java 核心类库中的一个非常基础的类。它是 java.lang
包的一部分,并且用于表示一个布尔值。以下是 JDK 8 中 Boolean
类的源码解析:
package java.lang;
import java.io.Serializable;
public final class Boolean implements Serializable, Comparable<Boolean> {
// 序列化 ID
private static final long serialVersionUID = -3665804199014368530L;
// Boolean true 和 false 的常量
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
// 真值和假值的字符串表示
public static final String TRUE_STRING = "true";
public static final String FALSE_STRING = "false";
// 实际存储布尔值的字段
private final boolean value;
// 构造函数
public Boolean(boolean value) {
this.value = value;
}
public Boolean(String s) {
this(parseBoolean(s));
}
// 从字符串解析布尔值
public static boolean parseBoolean(String s) {
return ((s != null) && s.equalsIgnoreCase(TRUE_STRING));
}
// 返回该布尔值的字符串表示
public String toString() {
return value ? TRUE_STRING : FALSE_STRING;
}
// 返回布尔值
public boolean booleanValue() {
return value;
}
// 比较两个布尔值
public int compareTo(Boolean b) {
return compare(this.value, b.value);
}
// 比较两个布尔值(静态方法)
public static int compare(boolean x, boolean y) {
return (x == y) ? 0 : (x ? 1 : -1);
}
// 判断两个布尔值是否相等
public boolean equals(Object obj) {
if (obj instanceof Boolean) {
return value == ((Boolean) obj).booleanValue();
}
return false;
}
// 返回布尔值的哈希码
public int hashCode() {
return Boolean.hashCode(value);
}
// 布尔值的静态哈希码计算方法
public static int hashCode(boolean value) {
return value ? 1231 : 1237;
}
// 从字符串转换为 Boolean 对象
public static Boolean valueOf(String s) {
return parseBoolean(s) ? TRUE : FALSE;
}
// 从布尔值转换为 Boolean 对象
public static Boolean valueOf(boolean b) {
return b ? TRUE : FALSE;
}
// 内部方法用于返回 true/false 的常量池
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
// 静态常量 TRUE 和 FALSE
static {
TRUE = new Boolean(true);
FALSE = new Boolean(false);
}
// 获取系统属性并返回布尔值
public static boolean getBoolean(String name) {
boolean result = false;
try {
result = parseBoolean(System.getProperty(name));
} catch (IllegalArgumentException | NullPointerException e) {
}
return result;
}
}
主要功能解析:
-
静态常量
TRUE
和FALSE
:Boolean.TRUE
和Boolean.FALSE
分别代表布尔值true
和false
,并且这些是单例对象,确保相同的布尔值使用同一对象,减少内存开销。
-
构造函数:
Boolean(boolean value)
:直接通过布尔值初始化。Boolean(String s)
:通过字符串初始化布尔值。如果字符串等于(忽略大小写)“true”,则值为true
,否则为false
。
-
布尔值解析:
parseBoolean(String s)
:将字符串解析为布尔值。
-
布尔值转换为字符串:
toString()
:返回布尔值的字符串表示(“true” 或 “false”)。
-
布尔值比较:
compareTo(Boolean b)
:比较当前对象与另一个布尔对象的值。compare(boolean x, boolean y)
:静态方法,比较两个布尔值。
-
布尔值相等判断:
equals(Object obj)
:判断当前对象与另一个对象是否相等。
-
哈希码:
hashCode()
:返回布尔值的哈希码。hashCode(boolean value)
:静态方法,计算布尔值的哈希码。
-
布尔值转换为对象:
valueOf(String s)
:将字符串转换为 Boolean 对象。valueOf(boolean b)
:将布尔值转换为 Boolean 对象。
-
系统属性获取:
getBoolean(String name)
:根据系统属性名获取布尔值。
这些方法和属性提供了基本的布尔值处理功能,确保布尔值在 Java 中的高效和可靠使用。