JDK源码解析---Boolean

1.概述

​ Java的Boolean对象是对boolean基本数据类型的封装,有着一个字段存放对应的boolean数据值,提供了许多方法方便对boolean进行操作。

2.类图

在这里插入图片描述

实现了序列化接口和可比较接口

3.属性

4个常量

  1. Boolean类型的 常量TRUE
  2. Boolean类型的 常量FLASE
  3. Boolean类对象 TYPE 所以 Boolean.TYPE == boolean.class 两者是等价的
  4. 序列化版本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;
    }

猜你喜欢

转载自blog.csdn.net/gongsenlin341/article/details/107530041