欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java 源码分析 ---Boolean

程序员文章站 2022-07-14 16:14:11
...

概况

Java的Boolean类主要作用就是对基本类型boolean进行封装,提供了一些处理boolean类型的方法。

当作为一个构造函数(带有运算符 new)调用时,Boolean() 将把它的参数转换成一个布尔值,并且返回一个包含该值的 Boolean 对象。
如果作为一个函数(不带有运算符 new)调用时,Boolean() 只将把它的参数转换成一个原始的布尔值,并且最终返回这个值。

主要属性

public static final Boolean TRUE = new Boolean(true);

public static final Boolean FALSE = new Boolean(false);复制代码

boolean 数据类型 boolean 变量存储为 8 位(1 个字节)的数值形式,但只能是 True 或是 False。

public static final Class<Boolean> TYPE = Class.getPrimitiveClass("boolean");
复制代码

TYPE的toString的值是boolean。

private final boolean value;
复制代码

既然是对基本类型boolean的封装,那必然要有一个变量来保存,即value,而且它被声明为final,表明它是不可变的。

主要方法

toBoolean方法

private static boolean toBoolean(String name) {
    return ((name != null) && name.equalsIgnoreCase("true"));
}
复制代码

当所给字符串 不为null,且等于字符串true时(不论大小写,即大小写不敏感),返回true,其余返回false

构造方法

public Boolean(boolean value) {
    this.value = value;
}

public Boolean(String s) {
    this(toBoolean(s));
}复制代码

构造方法有两种,第一种是传入boolean类型,直接将传入的值返回给你,第二种是String类型,对于String类型会进行toBoolean解析,即当传入的字符串忽略大小写等于”true”时判断为true,否则为false。

valueOf方法

public static Boolean valueOf(boolean b) {
    return (b ? TRUE : FALSE);
}

public static Boolean valueOf(String s) {
    return toBoolean(s) ? TRUE : FALSE;
}复制代码

valueOf方法有两种,第一种是传入boolean类型,通过三目运算求出值,当然也相当于直接将传入的值返回给你,第二种是String类型,对于String类型会进行toBoolean解析,即当传入的字符串忽略大小写等于”true”时判断为true,否则为false。

toString方法

public static String toString(boolean b) {
    return b ? "true" : "false";
}

public String toString() {
    return value ? "true" : "false";
}复制代码

返回表示指定布尔值的String对象。如果指定的布尔值为true,则字符串“true”将被返回,否则字符串“false”将被返回。

hashCode方法

public int hashCode() {
    return value ? 1231 : 1237;
}
复制代码

即true返回1231而false返回1237。

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方法,它会调用compare方法,对于两个boolean值进行三目运算,如果两个值相等,则返回0,如果第一个boolean值=true,返回1,反之返回false

equals方法

public boolean equals(Object obj) {
    if (obj instanceof Boolean) {
        return value == ((Boolean)obj).booleanValue();
    }
    return false;
}复制代码

equals方法就是先判断是不是从Boolean实例化出来的,然后再继续比较是不是相等。

getBoolean方法

public static boolean getBoolean(String name) {
    boolean result = false;
    try {
        result = toBoolean(System.getProperty(name));
    } catch (IllegalArgumentException e) {
    } catch (NullPointerException e) {
    }
    return result;
}复制代码

获取一个系统属性的boolean值,当系统属性的值equal(“true”)时,返回true,否则返回false,并且返回值是boolean型