只能是true或false兩個值之一的變量就是布爾(boolean)類型變量,true和false是布爾型直接量。你可以用下面的語句定義一個名稱為state的布爾型變量:
1
|
boolean state= true |
該語句用true值對變量state進行了初始化。你也可以使用賦值語句為一個boolean型變量賦值。例如,語句,
1
|
state= false |
設置變量state的值為false.
目前,我們除了為布爾變量賦值外,還不能進行更多的操作,但正像你在下一章中將要看到的,布爾型變量在程序做判定時,特別是在我們能夠用表達式產生一個boolean型結果時顯得更加有用。
有幾個組合布爾型數值的運算符,包括:布爾與(AND),布爾或(oR)和布爾非(它們分別對應&&、11、?。?以及產生boolean型結果的比較運算符。與其現在抽象地學習它們,到不如我們推遲到下一章,在那里,我們可以在練習中看到如何應用它們改變程序的執行順序。
有一點你需要注意,boolean型變量不同于其他的基本數據類型,它不能被轉換成任何其他的基本類型,其他的基本類型也不能被轉換成boolean類型。
Java生成Boolean對象的三種方法之比較
Java生成Boolean對象的第一種常見方法是通過new操作符
1
|
Boolean boolean1 = new Boolean( 1 == 1 ); |
第二種是通過靜態方法valueOf
1
|
Boolean boolean1 = Boolean.valueOf( 1 == 1 ); |
第三種是JDK1.5之后的自動裝箱
1
|
Boolean boolean1 = 1 == 1 ; |
這三種方法有什么區別呢?
先看一段代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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])); |
輸出結果是:
1
2
3
|
valueOf: true new Boolean: false auto wrap: true |
為什么會這樣呢?
原因就在于用new創建的Boolean對象是不斷的新創建一個實例對象,而valueOf則是返回Boolean類里的靜態成員變量,不會產生大量相同的實例變量。自動包裝和valueOf類似.
實際上jdk文檔也是建議用valueOf代替new方式來創建Boolean類對象。