public class Test7
{
public static void main(String[] args)
{
int i=5;
switch(i)
{
case 1:
System.out.println("one");
case 10:
System.out.println("ten");
case 5:
System.out.println("five");
case 3:
System.out.println("three");
default:
System.out.println("other");
}
}
}
è 結果是:
five
three
other
switch(表達式)
{
case 常量表達式1:語句1;
....
case 常量表達式2:語句2;
default:語句;
}
switch的用法是判斷case后面的表達式和switch后面的表達式是否相匹配,一旦case匹配,就會順序執行后面的程序代碼,而不管后面的case是否匹配,直到遇見break。
如上所給的代碼中,由於i等於5,和前面的兩個case都不匹配,所以結果中並沒有one和ten的。而第三個case中的5就和switch中i的值匹配,因此就會打印出five的,由於沒有遇到break所以就會順序執行很面的代碼,打印出three和other
對於流程控制中的switch-case語句,一直是我的一個弱項.
每當考試或者面試筆試的時候,總是丈二和尚摸不着頭腦,我想這應該是我基礎太差的原因吧!
為了徹底解決這個心病,不得不花點功夫了!
首先從原理上來闡述這個問題:
switch(表達式)
{ case 常量表達式1:語句1;
....
case 常量表達式2:語句2;
default:語句;
}
1.default就是如果沒有符合的case就執行它,default並不是必須的.
2.case后的語句可以不用大括號. case 后面必須是常量表達式constant expressions, 錯誤表示如: case x .
3.switch語句的判斷條件可以接受int,byte,char,short, enum不能接受其他類型.
4.一旦case匹配,就會順序執行后面的程序代碼,而不管后面的case是否匹配,直到遇見break,利用這一特性可以讓好幾個case執行統一語句.
原理歸原理,下面是幾個容易混淆的例子.
1.標准型(case后面都有break語句)
int i=3;
switch(i)
{
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("default");
break;
}
輸出結果:
3
