對於流程控制中的switch-case語句,一直是我的一個弱項.
每當考試或者面試筆試的時候,總是丈二和尚摸不著頭腦,我想這應該是我基礎太差的原因吧!
為了徹底解決這個心病,不得不花點功夫了!
首先從原理上來闡述這個問題:
switch(表達式)
{
case 常量表達式1:語句1;
....
case 常量表達式2:語句2;
default:語句;
}
1.default就是如果沒有符合的case就執行它,default並不是必須的.
2.case後的語句可以不用大括號.
3.switch語句的判斷條件可以接受int,byte,char,short,不能接受其他類型.
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
2.特殊型1(不是完全有break語句,可以完成一些特殊應用)
int year=2005;
int month=3;
int day;
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day=31;
break;
case 2:
day=28;
break;
case 4:
case 6:
case 9:
case 11:
day=30;
break;
}
這裡 day=31;
3.特殊型2(default的位置)
int i=1;
switch(i)
{
case 1:
System.out.println(1);
default:
System.out.println("default");
case 2:
System.out.println(2);
break;
case 3:
System.out.println(3);
break;
}
輸出結果:
1
default
2