深入解析Java編程中的boolean對(duì)象的運(yùn)用
只能是true或false兩個(gè)值之一的變量就是布爾(boolean)類型變量,true和false是布爾型直接量。你可以用下面的語(yǔ)句定義一個(gè)名稱為state的布爾型變量:
boolean state=true
該語(yǔ)句用true值對(duì)變量state進(jìn)行了初始化。你也可以使用賦值語(yǔ)句為一個(gè)boolean型變量賦值。例如,語(yǔ)句,
state=false
設(shè)置變量state的值為false.
目前,我們除了為布爾變量賦值外,還不能進(jìn)行更多的操作,但正像你在下一章中將要看到的,布爾型變量在程序做判定時(shí),特別是在我們能夠用表達(dá)式產(chǎn)生一個(gè)boolean型結(jié)果時(shí)顯得更加有用。
有幾個(gè)組合布爾型數(shù)值的運(yùn)算符,包括:布爾與(AND),布爾或(oR)和布爾非(它們分別對(duì)應(yīng)&&、11、?。?以及產(chǎn)生boolean型結(jié)果的比較運(yùn)算符。與其現(xiàn)在抽象地學(xué)習(xí)它們,到不如我們推遲到下一章,在那里,我們可以在練習(xí)中看到如何應(yīng)用它們改變程序的執(zhí)行順序。
有一點(diǎn)你需要注意,boolean型變量不同于其他的基本數(shù)據(jù)類型,它不能被轉(zhuǎn)換成任何其他的基本類型,其他的基本類型也不能被轉(zhuǎn)換成boolean類型。
Java生成Boolean對(duì)象的三種方法之比較
Java生成Boolean對(duì)象的第一種常見(jiàn)方法是通過(guò)new操作符
Boolean boolean1 = new Boolean(1==1);
第二種是通過(guò)靜態(tài)方法valueOf
Boolean boolean1 = Boolean.valueOf(1==1);
第三種是JDK1.5之后的自動(dòng)裝箱
Boolean boolean1 = 1==1;
這三種方法有什么區(qū)別呢?
先看一段代碼
Boolean[] boolean1 = new Boolean[100];
Boolean[] boolean2 = new Boolean[100];
Boolean[] boolean3 = new Boolean[100];
for (int i = 0; i < 100;i++){
boolean1[i] = Boolean.valueOf(1==1);
}
for (int i = 0;i < 100;i++){
boolean2[i] = new Boolean(1==1);
}
for (int i = 0; i < 100;i++){
boolean3[i] = 1==1;
}
System.out.println("valueOf: " + String.valueOf(boolean1[1] == boolean1[2]));
System.out.println("new Boolean: " + String.valueOf(boolean2[1] == boolean2[2]));
System.out.println("auto wrap: " + String.valueOf(boolean3[1] == boolean3[2]));
輸出結(jié)果是:
valueOf: true new Boolean: false auto wrap: true
為什么會(huì)這樣呢?
原因就在于用new創(chuàng)建的Boolean對(duì)象是不斷的新創(chuàng)建一個(gè)實(shí)例對(duì)象,而valueOf則是返回Boolean類里的靜態(tài)成員變量,不會(huì)產(chǎn)生大量相同的實(shí)例變量。自動(dòng)包裝和valueOf類似.
實(shí)際上jdk文檔也是建議用valueOf代替new方式來(lái)創(chuàng)建Boolean類對(duì)象。
相關(guān)文章
詳解java JDK 動(dòng)態(tài)代理類分析(java.lang.reflect.Proxy)
這篇文章主要介紹了詳解java JDK 動(dòng)態(tài)代理類分析(java.lang.reflect.Proxy)的相關(guān)資料,需要的朋友可以參考下2017-06-06
Spring3 整合MyBatis3 配置多數(shù)據(jù)源動(dòng)態(tài)選擇SqlSessionFactory詳細(xì)教程
這篇文章主要介紹了Spring3 整合MyBatis3 配置多數(shù)據(jù)源動(dòng)態(tài)選擇SqlSessionFactory詳細(xì)教程,需要的朋友可以參考下2017-04-04
詳解javaweb中jstl如何循環(huán)List中的Map數(shù)據(jù)
這篇文章主要介紹了詳解javaweb中jstl如何循環(huán)List中的Map數(shù)據(jù)的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10
使用java.util.Timer實(shí)現(xiàn)任務(wù)調(diào)度
這篇文章主要為大家詳細(xì)介紹了使用java.util.Timer實(shí)現(xiàn)任務(wù)調(diào)度,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03

