switch语句在匹配的时候, 始终是最后一个匹配项。
不管default放在什么位置,它总是在最后一个匹配,然后继续向下处理
如果default语句放在最后, 则是否加break语句无所谓。
但是,如果default不是在最后,会是什么情况:
1、 default后有break语句, 如果匹配测话, 执行相应的case, 没有匹配项, 则执行default语句,并正常跳出switch。
2、 default后无break语句, 如果匹配测话, 执行相应的case, 没有匹配项, 则执行default语句,并继续执行执行下一个case。
所以default是始终是最后一个匹配, 但并不是最后一个执行
例1:
public class SwitchTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("i==2:");
defaultTest(2);
}
public static void defaultTest(int i){
switch(i){
default:
System.out.println("default");
case 0:
System.out.println("zero");
break;
case 1:
System.out.println("one");
break;
case 2:
System.out.println("two");
break;
}
}
}
结果:
i==2:
two
分析:匹配成功,执行了对应的case, default没有执行
例2:
public class SwitchTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("i==9:");
defaultTest(9);
}
public static void defaultTest(int i){
switch(i){
default:
System.out.println("default");
case 0:
System.out.println("zero");
break;
case 1:
System.out.println("one");
break;
case 2:
System.out.println("two");
break;
}
}
}
结果:
i==9:
default
zero
分析:匹配失败,先执行default, 由于default后无break语句, 所以继续执行了case 1。