Java編程那些事兒34——switch語句文法鄭州遊戲學院 陳躍峰出自:http://blog.csdn.net/mailbomb
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語句要稍微快一些,在實際的代碼中,可以根據需要來使用對應的語句實現程式要求的邏輯功能。