文章目錄
- if
- switch case
Java中的條件語句包括if語句和switch case語句。
if
if作為條件語句,其文法為:
if(表達式1){
表達式2;
}
其中表達式1必須傳回布爾類型,如果為true就執行表達式2。
if後面可以跟else或者if else。
else if表示多條件判斷,跟在if後面:
else if(表達式1){
表達式2;
}
和if一樣,表達式1必須傳回布爾類型,如果為true就執行表達式2。
else跟在if或者else if的後面表示不成立的情況,如果表達式1的傳回值為false,則執行else裡面的代碼。
例:
public class Test {
public static void main(String[] args) {
int a = 0;
if (a > 0){
System.out.println(1);
}
else if (a < 0){
System.out.println(2);
}
else {
System.out.println(3);
}
}
}
輸出結果為:

因為a>0為false,是以不會執行if裡面的語句,繼續往下else if,a<0,仍然為false,不會執行else if裡面的語句。最後執行else裡面語句,輸出3。
注意:
1,if語句一次隻能執行一個分支,要麼執行if,要麼執行else if,要麼執行else,不可能同時傳回多個分支,if為true之後就不會再執行else if或者else,隻有所有的if和else if都為false才會執行else
2,else if或者else語句和if語句中間不能有其它語句,否則編譯器會報錯。如圖:
當if裡面隻有1個語句時,大括号可以省略。如:
switch case
switch case 語句判斷一個變量與一系列值中某個值是否相等,每個值稱為一個分支。
switch case 的文法如下:
switch(表達式){
case value :
//語句
break; //可選
case value :
//語句
break; //可選
//可以有任意數量的case語句
default : //可選
//語句
}
在JDK1.5之前,switch括号裡面的表達式隻支援byte short char int四種資料類型。
JDK1.5 在switch中增加了枚舉類與byte short char int的包裝類,對四個包裝類的支援是因為java編譯器在底層手動進行拆箱,而對枚舉類的支援是因為枚舉類有一個ordinal方法,該方法實際上是一個int類型的數值。
jdk1.7開始支援String類型,但實際上String類型有一個hashCode算法,傳回結果也是int類型。
byte short char類型可以在不損失精度的情況下向上轉型成int類型,是以總的來說,可以認為switch中隻支援int。
break和default屬于轉向語句:
break加在case語句後面,當遇到 break 語句時,switch 語句終止。case 語句不必須要包含 break 語句。如果沒有 break 語句出現,程式會繼續執行下一條 case 語句,直到出現 break 語句。
default分支一般是 switch 語句的最後一個分支(可以在任何位置,但建議在最後一個)。default 在沒有 case 語句的值和變量值相等的時候執行。default 分支不需要 break 語句。
如:
public class Test {
public static void main(String[] args) {
int a = 0;
switch(a){
case 1:
System.out.println(1);
break;
case 2:
System.out.println(2);
break;
case 3:
System.out.println(3);
break;
default:
System.out.println(0);
}
}
}
輸出結果:
因為a等于0,沒有任何一個case分支是0,是以執行default語句,輸出1。
switch case語句也可以這樣寫:
case value1:case value2:case value3:……
如:
public class Test {
public static void main(String[] args) {
int a = 0;
switch (a){
case 0:case 1:case 2: case 3:
System.out.println(0);
}
}
}
上述代碼表示a=0,1,2,3都輸出0。