黑马程序员技术交流社区
标题:
有关switch的穿透问题。
[打印本页]
作者:
yi651312197
时间:
2016-1-18 21:07
标题:
有关switch的穿透问题。
public class c {
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);
}
}
复制代码
穿透不好理解
作者:
宋叔辉
时间:
2016-1-18 21:51
break;语句使用在循环语句和switch语句中
switch结束分为两种情况:
1.遇到break;
2.遇到switch语句的右大括号
对于你这里遇到的问题来说,这里没有break语句,所以会一直从第一句运行下去
我们先来理一下思路:
这里switch(x) x=2 case的值中没有对应的值所以,这里会从default开始执行,
在执行为default后没有遇到break; 所以这里switch并不会停止执行而是按顺序结构执行
因为switch停止执行的情况只有以上两种.
所以会接着继续执行case 3: case 4:
所谓的穿透就是没有遇到break;程序一直往下执行
求技术分~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~
作者:
擎天柱
时间:
2016-1-18 21:53
说白了就是不加break时,后面继续执行,好像是吧
作者:
海湾
时间:
2016-1-18 22:37
他这个代码是从上到下执行的,x = 2 匹配不到 就开始执行default y++ y的值变成了4,由于没有break ,程序不会中断,会继续执行,并且不会再次匹配,也就是说不在看case 的值了,直到遇到右括号程序停止。y++了三次,变成了6 。
作者:
yehua1026
时间:
2016-1-18 22:46
结果是6
作者:
贫僧
时间:
2016-1-18 23:23
穿透就是程序继续向下执行
作者:
DDK畅
时间:
2016-1-19 00:16
结果应该是6
作者:
zhanganping
时间:
2016-1-19 00:24
结果为6
作者:
hansnowqiang
时间:
2016-1-19 09:04
你不写break,他就从配对的case那里往下都运行了。
写了break,从case运行到break
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2