黑马程序员技术交流社区

标题: 这题答案是什么 [打印本页]

作者: 正哥敲代码    时间: 2016-8-2 23:16
标题: 这题答案是什么
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结束吗


作者: hijk    时间: 2016-8-2 23:40
题意都没看懂........
作者: 梦想的小草    时间: 2016-8-2 23:49
加不加都可以
作者: showJiang    时间: 2016-8-3 00:00
不应该是zero、one、two、three么?进来switch,匹配0,输出zero,没有遇到break,继续向下执行(case穿透)。
switch语句在遇到break或右大括号结束,所以最后一个break,加不加效果都一样
作者: wangsir666    时间: 2016-8-3 00:02
答案是3);这个问题涉及到case穿透,i = 0;case 0:的时候满足条件,输出zero;继续向下,遇到break或者友花括号结束,所以一直到case 2:结束
作者: yanzhipenglai    时间: 2016-8-3 00:19
后面那个break   加不加都一样的结果  
答案是  3)   
因为case0和case1没有break,穿透了。
而case2有break,会跳出循环,并不会走到case3。
作者: 花陌相惜    时间: 2016-8-3 00:33
答案  zero,one,two
先匹配0 然后case穿透  遇到break就退出了
作者: 正哥敲代码    时间: 2016-8-3 08:00
谢谢明白了
作者: sfb749277979    时间: 2016-8-3 09:30
zero,one,two
作者: accomplonely    时间: 2016-8-3 19:54
这个SWITCH语句结束的条件是遇到Break或者执行到大括号结束,所以他会进来匹配0然后继续执行一直到Break,所以会输出zero,one,two
作者: 正哥敲代码    时间: 2016-8-3 23:40
受教了谢谢各位大大
作者: 15105106710    时间: 2016-8-4 00:25
答案是3




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