java 原始碼分析 —Boolean

Fysddsw_lc發表於2019-03-03

概況

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型

相關文章