A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


评分

参与人数 1黑马币 +1 收起 理由
易大帅 + 1

查看全部评分

来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端

14 个回复

倒序浏览
      某个case语句执行完成后,由于没有书写break;语句,导致switch语句并没有立即跳出结束语句,而直接向下执行其他的case语句,这种现象称为case穿透。
1、如何防止case穿透
答:使用break关键字退出switch
2、default: 如果不放在最后面,那么它放在前面就要加break,不然就会出现穿透问题,比如说:default :printf();case1: 出现问题
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
javaeeheima 发表于 2017-3-26 21:05
某个case语句执行完成后,由于没有书写break;语句,导致switch语句并没有立即跳出结束语句,而直接向 ...

太感谢你了,困扰好久了
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
回复 使用道具 举报
没有break不就是穿透了么
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
易大帅 发表于 2017-3-26 21:39
不错不错看好你

哈哈6666666666
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
扁舟 发表于 2017-3-27 07:15
没有break不就是穿透了么

现在明白了
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
首先,switch表达式会根据case去匹配,如果匹配成功那么就执行case后面的代码,如果在执行过程中遇到break那么就跳出这个表达式执行switch语句后面的代码,这就说明,不论属不属于同一个case,在switch表达式中只要没遇到break就会一直执行直到"}"为止,
回复 使用道具 举报
case0 不使用break,在执行完后会接着执行case1,直到遇到break
回复 使用道具 举报
没有break,会使case后面语句也执行例如:
回复 使用道具 举报
case1:   System.out.print("1");
回复 使用道具 举报
case2:System.out.print("2");break;,会输出1 2
回复 使用道具 举报
就是不会break而是进入下一个case啦
回复 使用道具 举报
当多个case的方法体相同时,可以使多个case使用共同的方法体。
回复 使用道具 举报
简单到爆,穿透就是穿透下一个case直到遇到break
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马