default是不是“以上均不执行,则…”的意思?
在“不得不说的几点小秘密3”中,如果没有break也没有default,则case1case2case3都作为输出结果。但是有了default就说明case123都不执行才执行default,所以虽然没有break,但是只执行default语句?
在“不得不说的几点小秘密3”中,如果没有break也没有default,则case1case2case3都作为输出结果。但是有了default就说明case123都不执行才执行default,所以虽然没有break,但是只执行default语句?
2019-01-05
我的理解是break的目的是告诉系统当case满足时执行的代码到break之前,如果没有break,系统就只认识switch语句最后一个}符号,其他的case都会忽略掉。
例:
int num=1;
switch (num){
case 1:
System.out.println("111");
case 2://由于系统没有看到break,会忽略掉这个case
System.out.println("222"); //但是系统认识这句话,所以当case值满足时,这句会执行
case 3://同样,由于系统没有看到break,会忽略掉这个case
System.out.println("333"); //但是系统认识这句话,所以当case值满足时,这句会执行
default://同样,由于系统没有看到break,会忽略掉这个default
System.out.println("444"); //但是系统认识这句话,所以当case值满足时,这句会执行
}
当num=1时执行的结果是:
111
222
333
444
当num=2时执行结果是:
222
333
444
当num=4时执行结果是:
444
mark
同意楼上的说法,break会跳出switch
遇上匹配的case就开始向下执行,没有匹配的case就从default开始向下执行
直到遇到break或者执行到了末尾
所以,如果不写break,并且把default放在中间位置,没有匹配的case时,会把default和default后面的case都执行
比如正常break写法
switch(num){
case 1:
System.out.println(num);
break;
default:
System.out.println("超出范围");
break;
case 2:
System.out.println(num);
break;
}
如果int num=1,结果是 1
如果int num=2,结果是 2
如果int num=3,结果是 超出范围
然后不带break的话
switch(num){
case 1:
System.out.println(num);
default:
System.out.println("超出范围");
case 2:
System.out.println(num);
}
如果int num=1,结果是
1
超出范围
2
如果int num=2,结果是 2
如果int num=3,结果是
超出范围
2
举报