黑马程序员技术交流社区
标题:
为什么Y不是等于4
[打印本页]
作者:
hxh362805079
时间:
2015-12-7 23:16
标题:
为什么Y不是等于4
int x = 2;
int y = 3;
switch(x){
default:
y++;
case 3:
y++;
case 4:
y++;
}
System.out.println("y="+y);
作者:
TG·小强
时间:
2015-12-8 12:20
只有遇到break;与“}”才结束case
作者:
Jerson_ZF
时间:
2015-12-8 13:10
执行的是default语句
作者:
490191916
时间:
2015-12-8 15:36
结果为6,因为没有匹配的case值,所以执行default语句,执行完default后就不在选择执行了,而是顺序执行,所以y自增了3次。如果default放在中间,则y自增2次。
作者:
Murphye
时间:
2015-12-8 19:51
结束switch语句的两种情况:
①遇到break,
②执行到switch语句结束。
作者:
迷茫不堪的年纪
时间:
2015-12-8 20:05
case 穿透 可以好好看看哈!
作者:
hrfhwy
时间:
2015-12-8 20:17
因为没有break,会继续往下执行
作者:
高云
时间:
2015-12-8 20:17
default后没有break,所以case做穿透,往下代码都执行了
作者:
xinxiangchen
时间:
2015-12-8 21:07
正好复习一下
作者:
songjianzaina
时间:
2015-12-8 21:33
本帖最后由 songjianzaina 于 2015-12-8 21:38 编辑
这叫做case穿透。您可以把代码看成这样,如下:
int x = 2;
int y = 3;
switch(x){
default:
case 3:
case 4:
y++;
y++;
y++;
}
System.out.println("y="+y);
作者:
罗宁
时间:
2015-12-8 21:39
结果为6啊
作者:
会走路的二百块
时间:
2015-12-8 22:24
case之后没有加rbreak,穿透执行了
作者:
洪志豪1994
时间:
2015-12-8 22:27
没有case匹配到的,就执行default,没有遇到break,就一直往下执行,直到遇到右大括号 } 才结束switch语句
作者:
魏志林
时间:
2015-12-8 22:56
楼上高见,差点没反应过来
作者:
StringBOX
时间:
2015-12-8 23:08
涨见识了,还有穿透这个东西。。。
作者:
bulala
时间:
2015-12-9 20:40
没有break
作者:
hi丶bo
时间:
2015-12-9 21:11
default不满足,,条件是X
作者:
hyl
时间:
2015-12-9 21:42
记住switch语句流程,和y++就相当于y=y+1.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2