您好,登錄后才能下訂單哦!
在程序中遇到多分支選擇的時候,想必大家都喜歡用if...else if...else...語句,尤其是初學者,因為在了解switch語句之前,我也是只會用if...else語句。那么現在看完這篇隨筆的介紹后,你們又有了另外一種選擇,使用switch語句可以增強代碼的可能性,當然switch也不是隨隨便便就能用的,它也有語法規則的約束。
|
在程序中遇到多分支選擇的時候,想必大家都喜歡用if...else if...else...語句,尤其是初學者,因為在了解switch語句之前,我也是只會用if...else語句。那么現在看完這篇隨筆的介紹后,你們又有了另外一種選擇,使用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后面的控制表達式只能是byte、short、char、int、String和枚舉類型,不能是boolean類型,if后面的控制表達式是boolean類型;switch語句中各個case標簽后代碼塊的開始點和結束點非常清晰,因此完全可以省略case后代碼塊的花括號。
為了更清晰的認識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,將會引入一個陷阱。
原文地址: https://www.linuxprobe.com/java-switch-if.html
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。