5.3.2 switch語句
switch關鍵字的中文意思是開關、轉換的意思,switch語句在條件語句中特別適合做一組變量相等的判斷,在結構上比if語句要清晰很多。
switch語句的語法格式為:
switch(表達式){
case 值1:
功能代碼1;
[break;]
case 值2:
功能代碼2;
[break;]
……
default:
功能代碼1;
[break;]
}
語法說明:
1、表達式的類型只能為byte、short、char和int這4種之一。
2、值1、值2…值n只能為常數或常量,不能為變量。
3、功能代碼部分可以寫任意多句。
4、break關鍵字的意思是中斷,指結束switch語句,break語句為可選。
5、case語句可以有任意多句,是標號語句。
6、default語句可以寫在switch語句中的任意位置,功能類似於if語句中的else。
執行流程:當表達式的值和對應case語句後的值相同時,既從該位置開始向下執行,一直執行到switch語句的結束,在執行中,如果遇到break語句,則結束switch語句的執行。
則在if-else if-else語句中,根據月份獲得每個月的天數,不考慮閏年,的示例代碼如下:
int month = 10;
int days = 0;
switch(month){
case 1:
days = 31;
break;
case 2:
days = 28;
break;
case 3:
days = 31;
break;
case 4:
days = 30;
break;
case 5:
days = 31;
break;
case 6:
days = 30;
break;
case 7:
days = 31;
break;
case 8:
days = 31;
break;
case 9:
days = 30;
break;
case 10:
days = 31;
break;
case 11:
days = 30;
break;
case 12:
days = 31;
break;
}
System.out.println(days);
根據switch語句的語法,該代碼也可以簡化為如下格式:
int month = 10;
int days = 0;
switch(month){
case 2:
days = 28;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
default:
days = 31;
}
System.out.println(days);
代碼說明:因為switch語句每次比較的是相等關系,所以可以把功能相同的case語句合並起來,而且可以把其他的條件合並到default語句中,這樣可以簡化case語句的書寫。該代碼的結構比最初的代碼簡潔很多了。
雖然在語法上switch只能比較相等的結構,其實某些區間的判別也可以通過一定的變換使用switch語句進行實現。例如if-else if-else語句示例中的分數轉換的示例,則分數的區間位於0-100之間,如果一個一個的去比較,case語句的數量會比較多,所以可以做一個簡單的數字變換,只比較分數的十位及以上數字,這樣數字的區間就縮小到了0-10,則實現的代碼如下:
int score = 87;
switch(score / 10){
case 10:
case 9:
System.out.println(‘A’);
break;
case 8:
System.out.println(‘B’);
break;
case 7:
System.out.println(‘C’);
break;
case 6:
System.out.println(‘D’);
break;
default:
System.out.println(‘E’);
}
當然,switch語句不是很適合進行區間的判別,更多的區間判別一般還是使用if-else if-else語句進行實現。
5.3.3 小結
if語句可以實現程序中所有的條件,switch語句特別適合一系列點相等的判別,結構顯得比較清晰,而且執行速度比if語句要稍微快一些,在實際的代碼中,可以根據需要來使用對應的語句實現程序要求的邏輯功能。
文章來源:http://blog.csdn.net/Mailbomb/archive/2008/06/14/2547207.aspx