黑马程序员技术交流社区

标题: 为什么Y不是等于4 [打印本页]

作者: hxh362805079    时间: 2015-12-7 23:16
标题: 为什么Y不是等于4
int x = 2;
                int y = 3;
                switch(x){
                        default:
                                y++;
                        case 3:
                                y++;
                        case 4:
                                y++;
                }
                System.out.println("y="+y);
作者: TG·小强    时间: 2015-12-8 12:20
只有遇到break;与“}”才结束case
作者: Jerson_ZF    时间: 2015-12-8 13:10
执行的是default语句
作者: 490191916    时间: 2015-12-8 15:36
结果为6,因为没有匹配的case值,所以执行default语句,执行完default后就不在选择执行了,而是顺序执行,所以y自增了3次。如果default放在中间,则y自增2次。
作者: Murphye    时间: 2015-12-8 19:51
结束switch语句的两种情况:
①遇到break,
②执行到switch语句结束。

作者: 迷茫不堪的年纪    时间: 2015-12-8 20:05
case  穿透 可以好好看看哈!
作者: hrfhwy    时间: 2015-12-8 20:17
因为没有break,会继续往下执行
作者: 高云    时间: 2015-12-8 20:17
default后没有break,所以case做穿透,往下代码都执行了
作者: xinxiangchen    时间: 2015-12-8 21:07
正好复习一下
作者: songjianzaina    时间: 2015-12-8 21:33
本帖最后由 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 21:39
结果为6啊
作者: 会走路的二百块    时间: 2015-12-8 22:24
case之后没有加rbreak,穿透执行了
作者: 洪志豪1994    时间: 2015-12-8 22:27
没有case匹配到的,就执行default,没有遇到break,就一直往下执行,直到遇到右大括号 } 才结束switch语句
作者: 魏志林    时间: 2015-12-8 22:56
楼上高见,差点没反应过来
作者: StringBOX    时间: 2015-12-8 23:08
涨见识了,还有穿透这个东西。。。
作者: bulala    时间: 2015-12-9 20:40
没有break

作者: hi丶bo    时间: 2015-12-9 21:11
default不满足,,条件是X  
作者: hyl    时间: 2015-12-9 21:42
记住switch语句流程,和y++就相当于y=y+1.




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