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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© drose 中级黑马   /  2016-5-29 20:12  /  750 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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啊。。。。

3 个回复

倒序浏览
有没有大神教下,谢谢。
回复 使用道具 举报
因为没有break,就会case穿透,我给你解析一下:首先switch(x),x=2吧,往下找case,没有2的值,那么去找default,执行一次Y++,没有遇到break,那就继续往下走,再进行一次y++,遇到了break,这次就可以跳出了...结构为5.
如果default的y++后面就有break的话,就只执行default里的y++.
回复 使用道具 举报
longyun 发表于 2016-5-29 22:01
因为没有break,就会case穿透,我给你解析一下:首先switch(x),x=2吧,往下找case,没有2的值,那么去找default, ...

嗯嗯,懂了,非常感谢。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马