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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© shijinlong 中级黑马   /  2015-9-16 21:50  /  750 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int x = 2,y=3;

switch(x)
{
        default:
                y++;
        case 3:
                y++;
                break;
        case 4:
                y++;
}

System.out.println("y="+y);

7 个回复

倒序浏览
这里Y的最终结果为6.
回复 使用道具 举报
这考的是Switch语句的执行流程,default虽然可以在Switch语句的任意位置,但是在执行的时候还是先把x的值与case后面的值去匹配,若是没有最后再执行default。而本题中执行完default后没有遇到break,这时就不会再判断case值而是继续往下执行,直到遇到break或者}结束。
回复 使用道具 举报
因为x=2   当执行switch语句时是首先看()中的内容,然后再按顺序执行case语句看有没有与()中内容匹配。如果没有匹配的话就会执行default后面的语句最后碰到break或}结束。
在这个案例中显然case后面没满足2的条件,所以就会执行default后面的语句又因为case和default后面没有break因此y++会执行3次直到碰到}结束。
回复 使用道具 举报
执行default,y+1=4,没有break不跳出,继续执行case3,y再加1得y=5
回复 使用道具 举报
当case中没有匹配的值时,就会执行default,执行过default后就不再判断case,而是向下执行,直到碰到break或者是switch语句结束,结果是5
回复 使用道具 举报
Y的结果是五遇到brake就会跳出循环
回复 使用道具 举报
6                     
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马