黑马程序员技术交流社区

标题: 求详细讲解 [打印本页]

作者: axiaowenjin    时间: 2016-6-30 18:48
标题: 求详细讲解
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);
为啥是这样啊,
作者: 地狱蓝枫    时间: 2016-6-30 20:24
swich语句中没有遇到break就会一直执行下去吧,所以y自加了3次,结果是6.
作者: syinys7    时间: 2016-6-30 21:01
第一种,x=2与switch的每个case值都不匹配,就会执行default语句y++并跳出,最后的y的结果是4;

第二种,x=2与switch的每个case也都不匹配,执行default语句后没有break就发生了的穿透,以下的每一个y++都执行了一次,最后y的结果是6
作者: zhangwenjin    时间: 2016-6-30 21:45
swich语句中case下必须有break,才能跳出,否则会继续运行(穿透),知道遇到break,或者是大括号;
无论default在上在下最后执行的都是他,当他在上面个的时候,执行到他,如果没有break会执行case中语句(此时不判断),依次执行下去,直到遇到break,或者是大括号;停止循环
所以是六
作者: ssd123mn    时间: 2016-6-30 21:49
x=2执行default语句y++并跳出,最后的y的结果是4;
x=2与switch的每个case也都不匹配,执行default语句后没有break就发生了的穿透,y++都执行了一次,最后y的结果是6




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2