public class test {
public static void main(String[] args) {
int a =5 ;
switch (a){
case 4:
a++;
case 5:
a++;
case 6:
a++;
case 7:
a++;
case 8:
a++;
default:
System.out.println(a);
}
}
}
如果問運(yùn)行上面代碼的輸出是什么,大家都知道程序會(huì)輸出9。
可是如果是這樣呢?
public class test {
public static void main(String[] args) {
int a =5 ;
switch (a){
case 6:
a++;
case 5:
a++;
case 4:
a++;
case 3:
a++;
default:
System.out.println(a);
}
}
}
答案是8。
經(jīng)過Debug調(diào)試發(fā)現(xiàn)是因?yàn)閟witch語句的case匹配語句只會(huì)匹配一次,當(dāng)匹配成功后,會(huì)執(zhí)行代碼直到遇到 break
語句結(jié)束,如果寫switch語句的時(shí)候沒有加入break語句,則會(huì)發(fā)生貫穿問題,繼續(xù)向下執(zhí)行代碼,直到switch代碼塊的最后一行(注意不是default)。
為了證明Switch不會(huì)執(zhí)行完default代碼塊就結(jié)束,運(yùn)行如下代碼:
public class test {
public static void main(String[] args) {
int a =5 ;
switch (a){
case 4:
a++;
case 5:
a++;
case 6:
a++;
case 7:
a++;
case 8:
a++;
default:
System.out.println(a);
case 9:
System.out.println(a);
}
}
那么case 9的代碼還會(huì)不會(huì)執(zhí)行呢?
答案是會(huì)的,運(yùn)行該程序會(huì)輸出兩行9。