以下分析并不一定在实际中有用,但是为了学习尤其是为了考试,觉得还是有必要了解的,因为有些东西,大家可能形成了一种“代码定势”,呵呵(通常都说是思维定势)。并不是死研究语法而是为了灵活的懂得一些东西。
- public class TestSwitch {
- public static void main(String[] args){
- byte a = 1;
- switch(a){
- case 1 : System.out.println(" A ");break;
- case 2 : System.out.println(" B ");break;
- case 3 : System.out.println(" C ");break;
- case 4 : System.out.println(" D ");break;
- default : System.out.println(" default ");
- }
- }
- }
但是我们做一下改造,将上面的case中的
break都去掉(
这在实际中要避免,是错误的,为了研究语法所以这样做),可能大家也想到了输出结果:
- public class TestSwitch {
- public static void main(String[] args){
- byte a = 1;
- switch(a){
- case 1 : System.out.println(" A ");
- case 2 : System.out.println(" B ");
- case 3 : System.out.println(" C ");
- case 4 : System.out.println(" D ");
- default : System.out.println(" default ");
- }
- }
- }
A
B
C
D
default
=================================
我想要说的是default能不能出现在switch中的任何一个地方呢?
答案是肯定的,一种习惯是:default都放在最后,这都是大家习惯的,也是非常好的一种习惯,
为了我们讨论学习
,所以我把它放到中间的某个地方,看看会出现什么情况:
首先要说明,我把代码中的a值设置成100,这样switch是无法找到匹配的,它会执行default语句,在此时没有break的情况下它会执行完default之后退出还是执行下面的case语句块呢,想象中我们可能认为default应该是最后一种情况,最后执行的代码段,但并非如此:
- public class TestSwitch {
- public static void main(String[] args){
- byte a = 100;
- switch(a){
- case 1 : System.out.println(" A ");
- case 2 : System.out.println(" B ");
- default : System.out.println(" default ");
- case 3 : System.out.println(" C ");
- case 4 : System.out.println(" D ");
- }
- }
- }
default
C
D
===============我就不分析了,大家慢慢体会吧。