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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© axiaowenjin 中级黑马   /  2016-6-30 18:48  /  451 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int x = 2;
                int y = 3;
                switch(x){
                        default:
                                y++;
                                break;
                        case 3:
                                y++;
                        case 4:
                                y++;
                }
                System.out.println("y="+y);
       
* B:看程序写结果://6
*
                int x = 2;
                int y = 3;
                switch(x){
                        default:
                                y++;
                        case 3:
                                y++;
                        case 4:
                                y++;
                }
                System.out.println("y="+y);
为啥是这样啊,

4 个回复

倒序浏览
swich语句中没有遇到break就会一直执行下去吧,所以y自加了3次,结果是6.
回复 使用道具 举报
第一种,x=2与switch的每个case值都不匹配,就会执行default语句y++并跳出,最后的y的结果是4;

第二种,x=2与switch的每个case也都不匹配,执行default语句后没有break就发生了的穿透,以下的每一个y++都执行了一次,最后y的结果是6
回复 使用道具 举报
swich语句中case下必须有break,才能跳出,否则会继续运行(穿透),知道遇到break,或者是大括号;
无论default在上在下最后执行的都是他,当他在上面个的时候,执行到他,如果没有break会执行case中语句(此时不判断),依次执行下去,直到遇到break,或者是大括号;停止循环
所以是六
回复 使用道具 举报
x=2执行default语句y++并跳出,最后的y的结果是4;
x=2与switch的每个case也都不匹配,执行default语句后没有break就发生了的穿透,y++都执行了一次,最后y的结果是6
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马