黑马程序员技术交流社区

标题: 求教作业题,谢谢 [打印本页]

作者: drose    时间: 2016-5-29 20:12
标题: 求教作业题,谢谢
int x = 2,y=3;
switch(x)
{
        default:
                y++;
        case 3:
                y++;
                break;
        case 4:
                y++;
}
System.out.println("y="+y);                      这道题的输出结果为什么是5?? 按条件X的值为2,不是应该直接跳过 case 3、 case4,直接运行default?结果应是4啊。。。。


作者: drose    时间: 2016-5-29 20:59
有没有大神教下,谢谢。
作者: longyun    时间: 2016-5-29 22:01
因为没有break,就会case穿透,我给你解析一下:首先switch(x),x=2吧,往下找case,没有2的值,那么去找default,执行一次Y++,没有遇到break,那就继续往下走,再进行一次y++,遇到了break,这次就可以跳出了...结构为5.
如果default的y++后面就有break的话,就只执行default里的y++.
作者: drose    时间: 2016-5-30 07:49
longyun 发表于 2016-5-29 22:01
因为没有break,就会case穿透,我给你解析一下:首先switch(x),x=2吧,往下找case,没有2的值,那么去找default, ...

嗯嗯,懂了,非常感谢。。。。。




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