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);
}
}
}
如果问运行上面代码的输出是什么,大家都知道程序会输出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。
经过Debug调试发现是因为switch语句的case匹配语句只会匹配一次,当匹配成功后,会执行代码直到遇到 break
语句结束,如果写switch语句的时候没有加入break语句,则会发生贯穿问题,继续向下执行代码,直到switch代码块的最后一行(注意不是default)。
为了证明Switch不会执行完default代码块就结束,运行如下代码:
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的代码还会不会执行呢?
答案是会的,运行该程序会输出两行9。
网友评论