A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Dr.Sparta 于 2014-11-1 18:23 编辑

请问switch语句中default的break是否可以省略?
例如
  1.         switch(a){
  2.                         case 1:
  3.                                 
  4.                         case 2:
  5.                                 
  6.                         case 3:
  7.                                 System.out.println(a+"有计入");
  8.                                 break;
  9.                                 
  10.                         default:
  11.                                 System.out.println(a+"无信息");
  12.                                 break;
  13.                         
  14.                 }
复制代码
运行时发现default的break有无都可以运行,是否可以省略呢?
第一次发提问有点小激动呢:)

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1 淡定

查看全部评分

13 个回复

倒序浏览
Default的含义是“其余情况”
如果不属于case 1、2、3的话就会执行Default后面的代码。
如果你把所有的情况都考虑到了,比如除了1、2、3以外不可能出现其他情况了,那么Default就可以省略了。
回复 使用道具 举报
流程就是
首先查找是否有与其相等的,有则跳该标签,没有直接跳default:编译器应该会添加默认的default;
但是当他转到一个标签的时候就会将下面的语句一直执行,无视case,直到遇到break才跳出;
所以如果你default 放其他标签前面,就必须加break;
放最后的话可以不加,因为到最后就直接跳出代码块了
回复 使用道具 举报 1 0
default如果放在最后就不用写break,单如果放在前面或中间就需要写break,防止穿透。给你个题思考吧:下面程序执行的结果是?(D)
int x=2,y=3;
switch(x)
{
        default:
        y++;
        case 3:
        y++;
        case 4:
        y++;

}
Sysetem.out.println("y="+y);
A.  3
B.  4
C.  5
D.  6
这就是不写break发生了穿透
回复 使用道具 举报
为了防止意外的程序异常,还是按照规范写比较好,这个也不是什么难记的语法
回复 使用道具 举报
好吧,这么多大神了,我就只来混混脸熟算了
回复 使用道具 举报
cxdzh 中级黑马 2014-10-26 00:24:21
7#
本帖最后由 cxdzh 于 2014-10-26 00:27 编辑

当有一个case符合判断之后,或者都不符合,运行default中的代码时,将会一直往下执行,直到遇到break.
例如
int x=4;
switch(x){default:
       System.out.print("3");      
case 1:
       System.out.print("1");
case 2:
       System.out.print("2");
      break;
}
打印结果会是312.

回复 使用道具 举报
郭.威 中级黑马 2014-10-26 22:00:24
8#
加油吧,好好看,一般这个语句也不怎么用,但也要记住,if语句必须熟练
回复 使用道具 举报
break最好写上 ,除非是特定情况不需要break
如果一个case语句没有break的话,那么代码执行完这一条case语句
会继续向下执行下一条case语句,即使条件不满足
一直遇到break位置才会结束
至于default,那是表示默认的情况,
如果你可以保证你考虑的条件或者情况很完全可以不写。
回复 使用道具 举报
在中间的都不以省略,符合条件啦,就要退出这段代码的执行。break;就是用于退出,不写的话,虽然已经找到满中条件的。但还继续向下判断
回复 使用道具 举报
      在中间的都不可以省略,符合条件啦,就要退出这段代码的执行。break;就是用于退出,不写的话,虽然已经找到满中条件的。但还继续向下判断。
回复 使用道具 举报
放到最后的话加不加都可以,如果放在case之前的话 加和不加 break运行结果就会不一样了
回复 使用道具 举报
case只是让程序找到入口,一进去没遇到break的话就一直跑,你说break能省么?至于default是可以省的。
回复 使用道具 举报
最好写上,这样保险一点,不然出现bug很难找的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马