黑马程序员技术交流社区

标题: 关于switch中case 缺少 break ; [打印本页]

作者: xingchen5645    时间: 2015-12-16 02:02
标题: 关于switch中case 缺少 break ;
如题:eg
class Demo2 {
        public static void main(String[] args) {
                int x = 3;
                int y = 4;
                switch (x){
                default :
                        y++;
                case 1:
                        y++;
                case 2:
                        y++;       
                }
                System.out.println(y);
        }
}
由于case 缺少 break, 其相当于进行了循环,且发生了穿透,为何第一次要考虑case 中条件判断情况?穿透后就不需要进行条件判断了?
作者: 李永佳    时间: 2015-12-16 12:07
switch语句有两种结束方式,遇到break或大括号,没遇到之前都会继续执行的
作者: 汐枫wait    时间: 2015-12-16 20:46
选择结构只会选择一个答案,执行了case后,如果这个case没有对应的break语句,会忽略剩余的case,继续向下执行可执行的语句,直到遇到break或者语句结束为止
作者: 乌合屁民    时间: 2015-12-16 21:39
我顶贴 我快乐~
作者: a54267490    时间: 2015-12-16 21:53
对,穿透后不会再判断条件了
作者: pllaoyao    时间: 2015-12-16 21:58
都已经穿透了,判断条件已经没用了
作者: a944090777    时间: 2015-12-16 23:08
没有break就按顺序进行穿透
作者: river1205    时间: 2015-12-16 23:18
遇到break或者到末尾
作者: 牛德阳    时间: 2015-12-16 23:23
这个运行结果是怎样的
作者: 雨来    时间: 2015-12-16 23:29
即便不穿透,因为没有操作表达式 x的值是不会变的 一遍下来 已经把所有case 都匹配不成功,所以如果走结构,也就是Java 中的执行顺序,会按顺序结果从上住下执行,出了switch 语句快这个循环结束了,你也可以想想for 为什么能循环 因为 有循环操作表达式  如果  只写 for(;;)那就成了死循环了;这里没有操作  x 的表达式,而且case穿透 没有匹配成功的,所以出了语句块  打印出 y 的值 因为 3次++ y 的值是  7  出了 main 语句块  main 方法弹栈 垃圾回收机制 在一个不定的时间段启动 程序就彻底的结束了
作者: anuo    时间: 2015-12-17 23:02

switch语句有两种结束方式,遇到break或大括号就会停




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