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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xingchen5645 中级黑马   /  2015-12-16 02:02  /  4611 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如题: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 中条件判断情况?穿透后就不需要进行条件判断了?

10 个回复

正序浏览
anuo 中级黑马 2015-12-17 23:02:45
11#

switch语句有两种结束方式,遇到break或大括号就会停
回复 使用道具 举报
雨来 高级黑马 2015-12-16 23:29:28
10#
即便不穿透,因为没有操作表达式 x的值是不会变的 一遍下来 已经把所有case 都匹配不成功,所以如果走结构,也就是Java 中的执行顺序,会按顺序结果从上住下执行,出了switch 语句快这个循环结束了,你也可以想想for 为什么能循环 因为 有循环操作表达式  如果  只写 for(;;)那就成了死循环了;这里没有操作  x 的表达式,而且case穿透 没有匹配成功的,所以出了语句块  打印出 y 的值 因为 3次++ y 的值是  7  出了 main 语句块  main 方法弹栈 垃圾回收机制 在一个不定的时间段启动 程序就彻底的结束了
回复 使用道具 举报
这个运行结果是怎样的
回复 使用道具 举报
遇到break或者到末尾
回复 使用道具 举报
没有break就按顺序进行穿透
回复 使用道具 举报
都已经穿透了,判断条件已经没用了
回复 使用道具 举报
对,穿透后不会再判断条件了
回复 使用道具 举报
我顶贴 我快乐~
回复 使用道具 举报
选择结构只会选择一个答案,执行了case后,如果这个case没有对应的break语句,会忽略剩余的case,继续向下执行可执行的语句,直到遇到break或者语句结束为止
回复 使用道具 举报
switch语句有两种结束方式,遇到break或大括号,没遇到之前都会继续执行的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马