一起學(xué)JDK源碼 -- Boolean類

boolean java基本數(shù)據(jù)類型之一程拭,只有兩個取值:true 和 false 這種類型只作為一種標(biāo)志來記錄 true/false ,其包裝類為Boolean類劳吠,里面提供了一些處理boolean類型的方法。接下來讓我們看一下Boolean類的具體實現(xiàn)宪赶。

基礎(chǔ)知識

1.java中判斷是否相等:
java中相等的判斷有兩中方式宗弯,一種是使用操作符==,一種是使用對象的equals方法搂妻。
== :對于基本數(shù)據(jù)類型==是數(shù)值比較蒙保,且基本數(shù)據(jù)類型只能用==進(jìn)行比較,對于引用數(shù)據(jù)類型==比較的是地址值欲主。
equals:比較兩個對象是否相等邓厕。如java中有兩個Person對象,對于現(xiàn)實中要比較這兩個人是否相同扁瓢,只需要比較其姓名详恼,身份證是否相同就可以了,在java中是兩個對象引几,自然有不同的地址昧互,若是用==進(jìn)行比較這兩個Person顯示不是同一個,這時就需要通過重寫equals方法實現(xiàn)自己的比較邏輯來判斷兩個Person是否相等她紫。
2.對象的排序
java中對象是通過Collections.sort進(jìn)行排序的硅堆,有兩種情況,一種是讓對象本身具有比較的特性贿讹,對象需要實現(xiàn)Comparable接口實現(xiàn)其compareTo方法渐逃;一種是創(chuàng)建一個新的比較器類,該類要實現(xiàn)Comparator接口民褂,實現(xiàn)其compare方法茄菊。
3.設(shè)置與獲取系統(tǒng)屬性
設(shè)置: 通過-Dkey=value的形式設(shè)置系統(tǒng)屬性
在eclipse中設(shè)置:
Run-->Run Confgurations-->然后在對話框的右邊選擇Arguments-->然后在VM arguments中輸入-Dkey=value
在命令行中設(shè)置:
java -Dkey=value -jar Test.jar
獲取:System.getProperty(propertyName)

Boolean類:

public final class Boolean implements Serializable,Comparable<Boolean>{}

可以看到Boolean類是final的不能被繼承赊堪,同時他實現(xiàn)了Comparable說明對象本身具有比較性面殖。

主要屬性

private final boolean value;

用于保存Boolean對象的值,而且是final的哭廉,一但初始化完成脊僚,不能被修改。

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

全局的不可改變的兩個Boolean對象遵绰。對于布爾值也就只有兩種狀態(tài)辽幌,即我們可以使用以上這兩個Boolean對象表示所有的布爾值。提供這兩個靜態(tài)變量相當(dāng)于對Boolean對象的"緩存",是為了讓開發(fā)者直接使用這兩個變量而不是每次都創(chuàng)建新的Boolean對象椿访,這樣既節(jié)省內(nèi)存又避免了創(chuàng)建一個新實例的時間開銷乌企。

public Boolean(boolean value) {
    this.value = value;
}
public Boolean(String s) {
    this(toBoolean(s));
}
private static boolean toBoolean(String name) {
    return ((name != null) && name.equalsIgnoreCase("true"));
}

兩種構(gòu)造方法,一種傳入boolean值成玫,一種傳入一個字符串加酵,傳入字符會進(jìn)行"to boolean"解析拳喻,即當(dāng)傳入的字符串忽略大小寫等于"true"時判斷為true,否則為false猪腕。
一般我們不推薦直接用構(gòu)造函數(shù)來創(chuàng)建Boolean對象冗澈,使用全局變量TRUE 、FALSE 或是使用Boolean.valueOf方法即可码撰,避免生成不必要的對象渗柿。

parseBoolean:

public static boolean parseBoolean(String s) {
    return toBoolean(s);
}

將字符串轉(zhuǎn)換為boolean值个盆,調(diào)用了toBoolean方法脖岛。只有當(dāng)傳入的字符串忽略大小寫為"true"時返回true否則返回false。

booleanValue:

public boolean booleanValue() {
    return value;
}

返回本對象的布爾值颊亮。

valueOf:

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

valueOf方法用于返回對應(yīng)的Boolean對象柴梆,這里可以看成從"緩存"中獲取Boolean對象,因為布爾類型只有兩種狀態(tài)终惑。

toString:

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

如果為true返回字符串"true"如果為false返回字符串"false"绍在。

hashCode:

public int hashCode() {
        return value ? 1231 : 1237;
}

true返回1231,false返回1237雹有。

equals:

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

先判斷對象是否是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;
}

根據(jù)給定的名稱查詢系統(tǒng)中是否存在該屬性霸奕,如果存在且為true則返回true溜宽,否則返回false。根據(jù)程序需要可以提前設(shè)置一些系統(tǒng)屬性质帅,使用System.getProperty(name)獲取設(shè)置的系統(tǒng)屬性适揉。

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用于比較兩個布爾值的大小true大于false,compareTo調(diào)用了compare方法煤惩。(x == y) ? 0 : (x ? 1 : -1)如果相等返回0嫉嘀,如果不等x為true則y為false返回1,否則返回-1魄揉。compareTo是實現(xiàn)的Comparable接口中的方法剪侮,該方法返回0表示本對象與傳入的對象相等,返回正數(shù)表示本對象比傳入的對象大洛退,返回負(fù)數(shù)表示本對象比傳入的對象小瓣俯。

查看所有目錄

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市不狮,隨后出現(xiàn)的幾起案子降铸,更是在濱河造成了極大的恐慌,老刑警劉巖摇零,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件推掸,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)谅畅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門登渣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人毡泻,你說我怎么就攤上這事胜茧。” “怎么了仇味?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵呻顽,是天一觀的道長。 經(jīng)常有香客問我丹墨,道長廊遍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任贩挣,我火速辦了婚禮喉前,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘王财。我一直安慰自己卵迂,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布绒净。 她就那樣靜靜地躺著见咒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疯溺。 梳的紋絲不亂的頭發(fā)上论颅,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機(jī)與錄音囱嫩,去河邊找鬼恃疯。 笑死,一個胖子當(dāng)著我的面吹牛墨闲,可吹牛的內(nèi)容都是我干的今妄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鸳碧,長吁一口氣:“原來是場噩夢啊……” “哼盾鳞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瞻离,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤腾仅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后套利,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體推励,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鹤耍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了验辞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稿黄。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖跌造,靈堂內(nèi)的尸體忽然破棺而出杆怕,到底是詐尸還是另有隱情,我是刑警寧澤壳贪,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布陵珍,位于F島的核電站,受9級特大地震影響撑碴,放射性物質(zhì)發(fā)生泄漏撑教。R本人自食惡果不足惜朝墩,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一醉拓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧收苏,春花似錦亿卤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至懦鼠,卻和暖如春钻哩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肛冶。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工街氢, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人睦袖。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓珊肃,卻偏偏與公主長得像,于是被迫代替她去往敵國和親馅笙。 傳聞我的和親對象是個殘疾皇子伦乔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,148評論 0 13
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法董习,類相關(guān)的語法烈和,內(nèi)部類的語法,繼承相關(guān)的語法皿淋,異常的語法招刹,線程的語...
    子非魚_t_閱讀 31,631評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理虱颗,服務(wù)發(fā)現(xiàn),斷路器蔗喂,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 最近馬伊琍主演的《我的前半生》算是火了宣赔,小編的爸爸媽媽姐姐同事都在看!也難怪瞪浸,馬伊琍真是演技爆棚了儒将,把劇中的人物子...
    戒咖啡cxj閱讀 398評論 0 0
  • 站在出世俯視入世, 站在入世回首出世对蒲, 站在有常窺伺無常 站在無常領(lǐng)略有常 站那山巔俯視大地 天下的烏鴉一般黑 指...
    縱情嬉戲天地間閱讀 183評論 9 2