黑马程序员技术交流社区

标题: switch 语句求解释 [打印本页]

作者: shijinlong    时间: 2015-9-16 21:50
标题: switch 语句求解释
int x = 2,y=3;

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

System.out.println("y="+y);
作者: 哈哈我赢了    时间: 2015-9-16 22:02
这里Y的最终结果为6.
作者: stream_lin    时间: 2015-9-16 22:05
这考的是Switch语句的执行流程,default虽然可以在Switch语句的任意位置,但是在执行的时候还是先把x的值与case后面的值去匹配,若是没有最后再执行default。而本题中执行完default后没有遇到break,这时就不会再判断case值而是继续往下执行,直到遇到break或者}结束。
作者: 哈哈我赢了    时间: 2015-9-16 22:12
因为x=2   当执行switch语句时是首先看()中的内容,然后再按顺序执行case语句看有没有与()中内容匹配。如果没有匹配的话就会执行default后面的语句最后碰到break或}结束。
在这个案例中显然case后面没满足2的条件,所以就会执行default后面的语句又因为case和default后面没有break因此y++会执行3次直到碰到}结束。
作者: 任振铭    时间: 2015-9-16 22:13
执行default,y+1=4,没有break不跳出,继续执行case3,y再加1得y=5
作者: 史世锋    时间: 2015-9-16 22:23
当case中没有匹配的值时,就会执行default,执行过default后就不再判断case,而是向下执行,直到碰到break或者是switch语句结束,结果是5
作者: Hi不言而喻    时间: 2015-9-16 22:28
Y的结果是五遇到brake就会跳出循环
作者: charryxiaocai    时间: 2015-9-16 23:47
6                     




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