黑马程序员技术交流社区
标题:
关于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