文章目录
概述
Boolean 类将基本类型 boolean 的值包装在一个对象中。一个 Boolean 类型的对象只包含一个类型为 boolean 的字段。
此外,此类还为 boolean 和 String 的相互转换提供了多种方法,并提供了处理 boolean 时非常有用的其他一些常量和方法。
类的定义
public final class Boolean implements java.io.Serializable, Comparable<Boolean>
Boolean 类是 final 的不能被继承,实现了 Comparable 接口,通过重写 compareTo 方法使得对象具有比较性
类变量
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
全局不可变的两个 Boolean 量,由于布尔类型只有两种状态,所以可以使用静态变量做为 Boolean 对象的缓存。这样调用者就可以直接使用而无需每次都创建新的 Boolean 对象。类似享元模式。
成员变量
private final boolean value;
用于保存 Boolean 对象的值,被 final 修饰表示其初始化完成后就不能再被修改。
构造方法
Boolean(boolean value)
public Boolean(boolean value) {
this.value = value;
}
不推荐使用该方法来创建 Boolean 对象,推荐使用性能更佳的静态工厂方法 valueOf(boolean)
Boolean(String s)
public Boolean(String s) {
this(parseBoolean(s));
}
public static boolean parseBoolean(String s) {
return ((s != null) && s.equalsIgnoreCase("true"));
}
如果传入的字符串不为 null 且为 “true”(忽略大小写),则返回 true 的 Boolean 对象。否则返回 false。
其他方法
parseBoolean(String)
public static boolean parseBoolean(String s) {
return ((s != null) && s.equalsIgnoreCase("true"));
}
booleanValue()
public boolean booleanValue() {
return value;
}
返回此 Boolean 对象的布尔值。
valueOf 系列
public static Boolean valueOf(boolean b) {
return (b ? TRUE : FALSE);
}
public static Boolean valueOf(String s) {
return parseBoolean(s) ? TRUE : FALSE;
}
总的来说,就是根据参数返回缓存的 Boolean 对象。
toString 系列
// 返回一个表示指定布尔值的 String 对象
public static String toString(boolean b) {
return b ? "true" : "false";
}
// 返回表示此布尔值的 String 对象。
public String toString() {
return value ? "true" : "false";
}
hashCode()
@Override
public int hashCode() {
return Boolean.hashCode(value);
}
public static int hashCode(boolean value) {
return value ? 1231 : 1237;
}
此 Boolean 对象如果为 true 返回 1231,为 false 返回 1237。
为什么是这两个数呢?因为它们是质数(只能被1和自身整除的数)。质数用于哈希时不容易产生哈希冲突。
equals(Object)
public boolean equals(Object obj) {
if (obj instanceof Boolean) {
return value == ((Boolean)obj).booleanValue();
}
return false;
}
将不为 null 的 Boolean 对象与本对象进行比较,当都表示相同的布尔值时才返回 true。
getBoolean(String)
public static boolean getBoolean(String name) {
boolean result = false;
try {
result = parseBoolean(System.getProperty(name));
} catch (IllegalArgumentException | NullPointerException e) {
}
return result;
}
当且仅当以参数命名的系统属性存在,且等于 “true” 字符串时,才返回 true。注意,它不是将 String 转换为 boolean 的方法。
public static void main(String[] args) {
String s1 = "tRue";
String s2 = new String( "true");
String s3 = "true";
System.setProperty(s1,"true");
System.setProperty(s2,"true");
System.out.println(Boolean.getBoolean(s1));//true
System.out.println(Boolean.getBoolean(s2));//true
System.out.println(Boolean.getBoolean(s2));//false
}
比较
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);
}
compareTo 是 Comparable 接口定义的方法,它调用了静态方法 compare 。该方法表示:
- 如果本对象与传入的对象(不为null)所表示的布尔值相同,则返回零;
- 如果本对象为 true,传入的对象为 false,则返回正数,表示本对象比传入的对象大
- 如果本对象为 false ,传入的对象为 true,则返回负数,表示本对象比传入的对象小
布尔运算
public static boolean logicalAnd(boolean a, boolean b) {
return a && b;
}
public static boolean logicalOr(boolean a, boolean b) {
return a || b;
}
public static boolean logicalXor(boolean a, boolean b) {
return a ^ b;
}
对传入的两个布尔参数进行 与/或/异或 操作

本文详细解析了Java中Boolean类的内部实现,包括类定义、构造方法、成员变量及各种实用方法,如valueOf、toString、hashCode等。同时,介绍了如何进行布尔值的比较和运算。
561

被折叠的 条评论
为什么被折叠?



