淺談Java中switch分支語句


前言:

在程序中遇到多分支選擇的時候,想必大家都喜歡用if...else if...else...語句,尤其是初學者,因為在了解switch語句之前,我也是只會用if...else語句。那么現在看完這篇隨筆的介紹后,你們又有了另外一種選擇,使用switch語句可以增強代碼的可能性,當然switch也不是隨隨便便就能用的,它也有語法規則的約束,請看下面的闡述。

 

 

一、switch簡介和語法

switch語句用於多分支選擇,由一個控制表達式和多個case標簽組成。switch語句后面的控制表達式的數據類型只能是byte、short、char、int、String和枚舉類型,不能是其它類型。

switch語句往往需要在case標簽后緊跟一個代碼塊,case標簽作為這個代碼塊的標識。

switch語句的語法如下:

switch(expr){
 case condition1{
 //代碼塊...
 break;
 }
 case condition2{
 //代碼塊...
 break;
 }
 ...
 case conditionN{
 //代碼塊...
 break;
 }
 dafault:{
 //代碼塊...
 }
}

這種分支語句的執行是先對expr求值,然后依次匹配每個case標簽后的condition值,遇到匹配的值即執行對應的代碼塊,如果condition的值沒有與expr表達式的值相等,則執行default標簽后的代碼塊。

二、switch語句和if語句的區別

switch語句和if語句都可用於分支條件的選擇,但switch后面的控制表達式只能是byte、short、char、int、String和枚舉類型,不能是boolean類型,if后面的控制表達式是boolean類型;switch語句中各個case標簽后代碼塊的開始點和結束點非常清晰,因此完全可以省略case后代碼塊的花括號。

三、switch的使用及注意事項

為了更清晰的認識switch,下面通過一段程序來示范switch的用法:

public class TestSwitch {
 public static void main(String[] args) {
 //聲明變量languageType
 String languageType = "Java";
 //執行switch語句
 switch (languageType) {
 case "C":
 System.out.println("C語言");
 break;
 case "Java":
 System.out.println("Java語言");
 break; 
 case "C++":
 System.out.println("C++語言");
 break;
 case "Python":
 System.out.println("Python語言");
 break;
 default:
 System.out.println("語言類型輸入錯誤");
 }
 }
}

運行上面的程序輸出:Java語言。

因為定義的變量(switch后面的控制表達式)"languageType" 與"Java"匹配。

如果把上面程序中的每個case標簽里的break語句去掉,將會發生什么樣的結果呢?那么我先把每個break語句注釋掉,運行結果如下:

Java語言 C++語言 Python語言 語言類型輸入錯誤

輸出結果是不是很奇怪!這正是switch語句的運行流程決定的,只要進入switch語句的入口,程序會一直運行下去,直到遇到break語句,如果省略了break語句,那么匹配case值后的所有情況(包括default)都會被執行。

所以,使用switch語句時,有兩個值得注意的地方:

1)switch后面的控制表達式只能是byte、short、char、int、String和枚舉類型;

2)如果省略了case后的代碼塊break,將會引入一個陷阱。

我是小架,我們下篇文章見!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM