黑马程序员技术交流社区

标题: switch语录里面的case穿透是什莫意思,求教 [打印本页]

作者: zhouxiaoyang    时间: 2017-3-26 20:56
标题: switch语录里面的case穿透是什莫意思,求教


作者: javaeeheima    时间: 2017-3-26 21:05
      某个case语句执行完成后,由于没有书写break;语句,导致switch语句并没有立即跳出结束语句,而直接向下执行其他的case语句,这种现象称为case穿透。
1、如何防止case穿透
答:使用break关键字退出switch
2、default: 如果不放在最后面,那么它放在前面就要加break,不然就会出现穿透问题,比如说:default :printf();case1: 出现问题

作者: zhouxiaoyang    时间: 2017-3-26 21:18
javaeeheima 发表于 2017-3-26 21:05
某个case语句执行完成后,由于没有书写break;语句,导致switch语句并没有立即跳出结束语句,而直接向 ...

太感谢你了,困扰好久了

作者: 易大帅    时间: 2017-3-26 21:39
不错不错看好你

作者: 扁舟    时间: 2017-3-27 07:15
没有break不就是穿透了么

作者: zhouxiaoyang    时间: 2017-3-27 07:22
易大帅 发表于 2017-3-26 21:39
不错不错看好你

哈哈6666666666

作者: zhouxiaoyang    时间: 2017-3-27 07:22
扁舟 发表于 2017-3-27 07:15
没有break不就是穿透了么

现在明白了

作者: wangkeworld    时间: 2017-3-27 14:01
首先,switch表达式会根据case去匹配,如果匹配成功那么就执行case后面的代码,如果在执行过程中遇到break那么就跳出这个表达式执行switch语句后面的代码,这就说明,不论属不属于同一个case,在switch表达式中只要没遇到break就会一直执行直到"}"为止,
作者: 龙哮天    时间: 2017-3-27 22:48
case0 不使用break,在执行完后会接着执行case1,直到遇到break
作者: OnlyDotaer    时间: 2017-3-27 22:56
没有break,会使case后面语句也执行例如:
作者: OnlyDotaer    时间: 2017-3-27 22:57
case1:   System.out.print("1");
作者: OnlyDotaer    时间: 2017-3-27 22:58
case2:System.out.print("2");break;,会输出1 2
作者: zxcasdf555    时间: 2017-3-28 21:43
就是不会break而是进入下一个case啦
作者: 亮仔开发    时间: 2017-3-28 22:41
当多个case的方法体相同时,可以使多个case使用共同的方法体。
作者: 小麦芽    时间: 2017-3-29 10:27
简单到爆,穿透就是穿透下一个case直到遇到break




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