文章目录
1.概述
Java的Boolean对象是对boolean基本数据类型的封装,有着一个字段存放对应的boolean数据值,提供了许多方法方便对boolean进行操作。
2.类图
实现了序列化接口和可比较接口
3.属性
4个常量
- Boolean类型的 常量TRUE
- Boolean类型的 常量FLASE
- Boolean类对象 TYPE 所以 Boolean.TYPE == boolean.class 两者是等价的
- 序列化版本id
一个final修饰的私有变量 value,存放Boolean对象对应的boolean值
4.构造方法
1.boolean参数的构造方法
public Boolean(boolean value) {
this.value = value;
}
2.String参数的构造方法
内部调用了上面的一种构造方法,参数由传入的String决定。若s为"true",则参数为true,否则为false。
public Boolean(String s) {
this(parseBoolean(s));
}
5.其他方法
5.1返回value
booleanValue() 直接返回这个对象的boolean值
public boolean booleanValue() {
return value;
}
5.2 转换
static Boolean valueOf(boolean b); 若b为true则返回true,否则返回false
我们通过Boolean b = new Boolean(true);时会获得一个新的实例对象,当你并不需要这个新实例而只要对应的值时,就应该采用这里的静态方法,直接返回了上面定义的静态变量,节省了一点内存又避免了创建一个新实例的时间开销。
public static Boolean valueOf(boolean b) {
return (b ? TRUE : FALSE);
}
static Boolean valueOf(String s);若s为"true"则返回true 否则返回false
static String toString(boolean b); b为true 则返回字符串"true",否则返回"false"
以上三种是静态方法 可通过类名直接调用
String toString(); 将调用此方法的Boolean对象转换为String, 若为value为true,则返回"true",否则返回"false"
5.3 哈希计算
true对应的hash值为1231,false对应的hash值为1237.
这两个值是比较大的质数,而boolean值是比较常用的值,可以减少hash冲突的次数。有助于提高效率
public int hashCode() {
return Boolean.hashCode(value);
}
public static int hashCode(boolean value) {
return value ? 1231 : 1237;
}
5.4 比较equals
首先判断类型是否相同,在判断value对应的boolean值是否相同
public boolean equals(Object obj) {
if (obj instanceof Boolean) {
return value == ((Boolean)obj).booleanValue();
}
return false;
}
5.5 获取Java系统属性
注意这里并不是将字符串"true"转换成boolean类型的true。而是当且仅当系统属性中存在着对应名称的属性,且它的值为“true”(忽略大小写)时,返回true类型,否则返回false。
public static boolean getBoolean(String name) {
boolean result = false;
try {
result = parseBoolean(System.getProperty(name));
} catch (IllegalArgumentException | NullPointerException e) {
}
return result;
}
5.6 比较compareTo
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的对象和b对象进行比较。
内部调用compare方法比较两个对象的value值。
若值相同返回0,若调用者的value为true则返回1,否则返回-1。
5.7 与/或/异或
逻辑与 全true则true 否则为false
逻辑或 全false则false 否则为true
异或 a与b不同为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;
}