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