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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 正哥敲代码 中级黑马   /  2016-8-2 23:16  /  929 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int i = 0;
switch (i) {
case 0:
System.out.println("zero");
case 1:
System.out.println("one");
case 2:
System.out.println("two");
break;
case 3:
   System.out.println("three");
     // break; //要加吗
}
1) zero
2) zero,one
3) zero,one,two
4) zero,one,two,three
答案应该是zero把最后一个要加break结束吗

11 个回复

倒序浏览
题意都没看懂........
回复 使用道具 举报
加不加都可以
回复 使用道具 举报
不应该是zero、one、two、three么?进来switch,匹配0,输出zero,没有遇到break,继续向下执行(case穿透)。
switch语句在遇到break或右大括号结束,所以最后一个break,加不加效果都一样
回复 使用道具 举报
答案是3);这个问题涉及到case穿透,i = 0;case 0:的时候满足条件,输出zero;继续向下,遇到break或者友花括号结束,所以一直到case 2:结束
回复 使用道具 举报
后面那个break   加不加都一样的结果  
答案是  3)   
因为case0和case1没有break,穿透了。
而case2有break,会跳出循环,并不会走到case3。
回复 使用道具 举报
答案  zero,one,two
先匹配0 然后case穿透  遇到break就退出了
回复 使用道具 举报
谢谢明白了
回复 使用道具 举报
zero,one,two
回复 使用道具 举报
这个SWITCH语句结束的条件是遇到Break或者执行到大括号结束,所以他会进来匹配0然后继续执行一直到Break,所以会输出zero,one,two
回复 使用道具 举报
受教了谢谢各位大大
回复 使用道具 举报
答案是3
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马