黑马程序员技术交流社区

标题: 关于switch default结束后case的执行顺序问题 [打印本页]

作者: 这个名字也有宇    时间: 2016-3-14 23:23
标题: 关于switch default结束后case的执行顺序问题
switch 语句有个问题
int x = 2,y=3;
switch(x){       
        case 5:
                y++;
           break;
        default:
                y++;
        case 3:
                y++;
        case 4:
                y++;
}
System.out.println("y="+y);
}
                             这里输出   y=6
int x = 2,y=3;
switch(x){       
        case 5:
                     y++;
        default:
                   y++;
        case 3:
                   y++;
                    break;       
        case 4:
                y++;
}
System.out.println("y="+y);
}
这里输出  y=5
这里case均不满足条件,那先执行default后面的语句,执行完后case也要执行,这里的话case执行顺序是怎么样的呢?
从default后面开始 ,还是从最上面的程序开始?
第一种的话,无论是default执行后,从上到下执行case程序
还是从default执行后,直接从default后执行case程序好像都不是y=6.
求解答的。



作者: monZhang    时间: 2016-3-14 23:45
从default后执行 default:
                y++;
        case 3:
                y++;
        case 4:
                y++;
执行这几行后跳出switch语句  结果为6
作者: 德华    时间: 2016-3-14 23:56
哎呀!这个有点难度!
作者: huhemingtiancai    时间: 2016-3-15 00:33
从default后面执行,找到}或者break结束switch语句
作者: 新程员    时间: 2016-3-15 00:39
case的穿透效果啊
作者: hpuie0703    时间: 2016-3-15 00:57
学习了.
作者: 305450674    时间: 2016-3-15 03:50
结果等于6
作者: yunfeng482    时间: 2016-3-15 10:06
受教了{:2_32:}
作者: 这个名字也有宇    时间: 2016-3-16 00:50
huhemingtiancai 发表于 2016-3-15 00:33
从default后面执行,找到}或者break结束switch语句

恩恩 谢谢你了   没学到遇到右大括号  也结束语句的~
作者: 这个名字也有宇    时间: 2016-3-16 00:52
monZhang 发表于 2016-3-14 23:45
从default后执行 default:
                y++;
        case 3:

等于是从default后面开始执行,遇到 } 就结束了语句?




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