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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑暗中漫舞 中级黑马   /  2016-6-29 23:36  /  904 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int x = 2,y=3;
                                               
        switch(x)
        {
                default:
                        y++;
                case 3:
                        y++;
                        break;
                case 4:
                        y++;
        }

        System.out.println("y="+y);

求Y,关键是讲解下

9 个回复

倒序浏览
当x=2时,在switch找有没有case 2: 来选择进入,但是没有,就会执行default(default可以放任意位置,但是他是在没有对应的case x 才会最后执行,不过本利在最上面),执行default后,y++,y值成3,没有遇见break就继续向下走,case 3,然后y++,y值就变成4了,然后遇见break就停止运行.总的来说就是break就像一堵墙.没有break就没墙,就可以一直穿透,有break的话,遇见break就停止

点评

讲的很正确也很详细  发表于 2016-6-30 10:28
回复 使用道具 举报 1 0
我也是来拿个分的.
回复 使用道具 举报
赞一个!!
回复 使用道具 举报
执行了两次y++,你只要明确一点,switch只有遇到break才退出,否则会一直执行,直到遇到break。
回复 使用道具 举报
先看case 3,遇到break,退出,然后case 4,没有break,执行y++,然后进行default,执行y++,遇大括号,结束输出,y=5(我也是刚学,不知道理解的对不对)
回复 使用道具 举报
2、3默认会走default;但你default没加break;所以会发生case穿透
回复 使用道具 举报
本帖最后由 qq472792548 于 2016-6-30 10:17 编辑

y=5;理由:当开始执行switch时候,先执行case3,得到Y++ ,此时Y为4,下一步执行default,Y++,这时候Y为5,之后遇到break,跳出switch。
                                                
      
     


回复 使用道具 举报
本帖最后由 ancheng 于 2016-6-30 10:45 编辑
qq472792548 发表于 2016-6-30 10:13
y=5;理由:当开始执行switch时候,先执行case3,得到Y++ ,此时Y为4,下一步执行default,Y++,这时候Y为5 ...
因为没有传入的是2,所以直接执行default,default后面没有break,所以继续执行case3,case4
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马