Boolean 类将原始类型boolean的值包装在一个对象中。包括在处理boolean时有用的其他常量和方法。
一、结构图
二、结构
二、方法介绍
1、静态变量
public static final Boolean TRUE = new Boolean(true);
/**
* The {@code Boolean} object corresponding to the primitive
* value {@code false}.
*/
public static final Boolean FALSE = new Boolean(false);
/**
* The Class object representing the primitive type boolean.
*
* @since JDK1.1
*/
public static final Class<Boolean> TYPE = (Class<Boolean>) Class.getPrimitiveClass("boolean");
// 为指定原始对象返回虚拟机类对象
static native Class<?> getPrimitiveClass(String name);
2、属性
private final boolean value;
存储着Boolean对象中的基本数据类型boolean值
3、方法及构造方法介绍
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"));
}
第二个构造方法如果字符串s不是"true"就返回false。
public boolean booleanValue() {
return value;
}
返回Boolean存储的boolean值。
public static Boolean valueOf(boolean b) {
return (b ? TRUE : FALSE);
}
public static Boolean valueOf(String s) {
return parseBoolean(s) ? TRUE : FALSE;
}
将基本数据类型或字符串转换为包装类型。
public static String toString(boolean b) {
return b ? "true" : "false";
}
将基本数据类型转换为字符串类型。
public String toString() {
return value ? "true" : "false";
}
public int hashCode() {
return Boolean.hashCode(value);
}
public static int hashCode(boolean value) {
return value ? 1231 : 1237;
}
这里你是不是出现了一些的疑问?为什么hashCode返回的是1231和1237呢?这和之前的String计算hashCode选择31是一个道理,素数可以使hashCode更好地散列,另外1+2+3+1=7;1+2+3+7=13;7代表好运,13代表厄运。
public boolean equals(Object obj) {
if (obj instanceof Boolean) {
return value == ((Boolean)obj).booleanValue();
}
return false;
}
是否相等根据包装类的value值来确定。
public static boolean getBoolean(String name) {
boolean result = false;
try {
result = parseBoolean(System.getProperty(name));
} catch (IllegalArgumentException | NullPointerException e) {
}
return result;
}
System.getProperty(name)方法是获取系统属性名称为name的值。
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);
}
由于实现了Comparable接口所以这是Boolean类的实现(true > false)。
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;
}
逻辑运算,感觉没什么用。
这个类异常轻松。
好啦,完结撒花★,°:.☆( ̄▽ ̄)/$:.°★ 。