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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yi651312197 中级黑马   /  2016-1-18 21:07  /  1590 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class c {

  2.         public static void main(String[] args){
  3.                

  4.                 int x=2,y=3;
  5.                 switch(x)
  6.                 {
  7.                         default:
  8.                                 y++;
  9.                         case 3:
  10.                                 y++;
  11.                                 
  12.                         case 4:
  13.                                 y++;
  14.                                 
  15.                 }
  16.                 System.out.println("y="+y);
  17.         }
  18. }
复制代码
穿透不好理解

9 个回复

倒序浏览
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-19 00:13
回复 使用道具 举报 1 0
擎天柱 来自手机 中级黑马 2016-1-18 21:53:53
藤椅
说白了就是不加break时,后面继续执行,好像是吧
回复 使用道具 举报
他这个代码是从上到下执行的,x = 2 匹配不到 就开始执行default y++  y的值变成了4,由于没有break ,程序不会中断,会继续执行,并且不会再次匹配,也就是说不在看case 的值了,直到遇到右括号程序停止。y++了三次,变成了6 。
回复 使用道具 举报
结果是6
回复 使用道具 举报
穿透就是程序继续向下执行
回复 使用道具 举报
DDK畅 中级黑马 2016-1-19 00:16:55
7#
结果应该是6
回复 使用道具 举报
结果为6
回复 使用道具 举报
你不写break,他就从配对的case那里往下都运行了。
写了break,从case运行到break
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马