问题1:java中swich-case如果不带break,如果有一个case命中,为什么会执行后面不满足条件的case?
int x = 1;
swich (x) {
case 0 : System.out.println(0);
case 1 : System.out.println(1);
case 2 : System.out.println(2);
case 3 : System.out.println(3);
default : System.out.println(4);
}
输出结果:
1
2
3
问题2:如果default的位置并不处于最后,那么为什么无case命中时,执行了default之后还会继续执行default后的case中的语句?
int x = 5;
swich (x) {
case 0 : System.out.println(0);
default : System.out.println(4);
case 1 : System.out.println(1);
case 2 : System.out.println(2);
case 3 : System.out.println(3);
}
输出结果:
4
1
2
3
想了解一下原理。以及不带break的适用于什么业务场景?
break相当于中断,你再命中某个case后,就会执行相应的break,如果没有break。他就没有中断,肯定会继续执行下去。
default 一定是最后才执行的,跟顺序无关。
第一个问题:switch case 相当于 for循环,如果命中条件,假设for循环遍历10次,在2下标命中,命中后如果你不break或直接return,for循环会一直执行下去。
第二个问题:default更多的是一种标识,如果在他之前条件都不满足才会执行它,当然这个要建立其他条件有break的情况下,否则default没有任何意义。
综合来看,switch case是一种流程控制语句,既然是流程控制,就需要设定流程规则,没有了break,就相当于北京的地铁不会到站停车一样,尽管你对那些站熟稔于心。
case穿透,举个列子,如果星期一到星期五工作,星期六到星期天上班,就可以用case穿透减少代码的重复执行