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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨森的安卓路 中级黑马   /  2016-11-21 20:05  /  1329 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class lianxi {
        public static void main(String[] args) {
                int x = 2,y=3;

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

                System.out.println("y="+y);
        }
}
这个输出怎么是6,请大神指点一下

6 个回复

倒序浏览
本帖最后由 zf2501 于 2016-11-21 20:22 编辑

因为你没有break; 所以当x进入switch语句时,先匹配case值,没有满足的,执行default 中的y++//此时y = 4 ;然后继续执行 case3 里面的 y++ ;

最后执行 case4 里面的 y++;
所以输出为6 ;
回复 使用道具 举报
zf2501 发表于 2016-11-21 20:21
因为你没有break; 所以当x进入switch语句时,先匹配case值,没有满足的,执行default 中的y++//此时y = 4 ;然 ...

执行完default后,就会顺序执行,没有遇到break,也会忽略掉case3,case4,只是顺序执行运算,是不是
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
杨森的安卓路 发表于 2016-11-21 21:00
执行完default后,就会顺序执行,没有遇到break,也会忽略掉case3,case4,只是顺序执行运算,是不是
...

嗯嗯,就是那样的
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
zf2501 发表于 2016-11-21 21:09
嗯嗯,就是那样的

谢谢哈
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
杨森的安卓路 发表于 2016-11-21 21:14
谢谢哈

客气客气,多练习,自然就知道怎么回事了
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
其实就是case穿透问题
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马