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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hxh362805079 中级黑马   /  2015-12-7 23:16  /  1550 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int x = 2;
                int y = 3;
                switch(x){
                        default:
                                y++;
                        case 3:
                                y++;
                        case 4:
                                y++;
                }
                System.out.println("y="+y);

17 个回复

正序浏览
hyl 中级黑马 2015-12-9 21:42:39
18#
记住switch语句流程,和y++就相当于y=y+1.
回复 使用道具 举报
default不满足,,条件是X  
回复 使用道具 举报
没有break
回复 使用道具 举报
涨见识了,还有穿透这个东西。。。
回复 使用道具 举报
楼上高见,差点没反应过来
回复 使用道具 举报
没有case匹配到的,就执行default,没有遇到break,就一直往下执行,直到遇到右大括号 } 才结束switch语句
回复 使用道具 举报
case之后没有加rbreak,穿透执行了
回复 使用道具 举报
结果为6啊
回复 使用道具 举报
本帖最后由 songjianzaina 于 2015-12-8 21:38 编辑

这叫做case穿透。您可以把代码看成这样,如下:
                int x = 2;
                int y = 3;
                switch(x){
                        default:                        
                         case 3:
                          case 4:
                             y++;
                             y++;
                             y++;
       }               
      System.out.println("y="+y);                       



回复 使用道具 举报
正好复习一下
回复 使用道具 举报
高云 中级黑马 2015-12-8 20:17:19
8#
default后没有break,所以case做穿透,往下代码都执行了
回复 使用道具 举报
hrfhwy 中级黑马 2015-12-8 20:17:10
7#
因为没有break,会继续往下执行
回复 使用道具 举报
case  穿透 可以好好看看哈!
回复 使用道具 举报
结束switch语句的两种情况:
①遇到break,
②执行到switch语句结束。
回复 使用道具 举报
结果为6,因为没有匹配的case值,所以执行default语句,执行完default后就不在选择执行了,而是顺序执行,所以y自增了3次。如果default放在中间,则y自增2次。
回复 使用道具 举报
执行的是default语句
回复 使用道具 举报
只有遇到break;与“}”才结束case
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马