为了账号安全,请及时绑定邮箱和手机立即绑定

default是不是“以上均不执行,则…”的意思?

在“不得不说的几点小秘密3”中,如果没有break也没有default,则case1case2case3都作为输出结果。但是有了default就说明case123都不执行才执行default,所以虽然没有break,但是只执行default语句?


正在回答

4 回答

我的理解是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


2 回复 有任何疑惑可以回复我~
#1

慕虎1164778 提问者

谢谢!
2019-01-09 回复 有任何疑惑可以回复我~

o(╥﹏╥)o下面那段

如果int num=1,结果是

1

超出范围

1

如果int num=2,结果是 2

如果int num=3,结果是 

超出范围

3


0 回复 有任何疑惑可以回复我~

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


0 回复 有任何疑惑可以回复我~
#1

慕圣3045325

额……最后那段写错了 应该是 如果int num=3,结果是 超出范围 3
2019-03-27 回复 有任何疑惑可以回复我~

break 的作用是跳出switch的“{}”,没有break就不会跳出,将成立的“case语句后面的输出语句”全部执行一遍。还有一点需要注意的就是程序是从上向下依次执行的。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

default是不是“以上均不执行,则…”的意思?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信