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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© q757571446 中级黑马   /  2015-4-1 11:29  /  1577 人查看  /  20 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我吧switch中的break语句注释掉,为什么会返回这个结果。
  1. class  SeasonTest1
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int x=6;
  6.                 switch (x)
  7.                 {
  8.                 case 1:
  9.                 case 2:
  10.                 case 3:
  11.                         System.out.println("春天已至");
  12.                         //break;
  13.                 case 4:
  14.                 case 5:
  15.                 case 6:
  16.                         System.out.println("夏天到了");
  17.                         //break;
  18.                 case 7:
  19.                 case 8:
  20.                 case 9:
  21.                         System.out.println("秋天来了");
  22.                         //break;
  23.                 case 10:
  24.                 case 11:
  25.                 case 12:
  26.                         System.out.println("冬天降临");
  27.                         //break;
  28.                 default:
  29.                         System.out.println("你是不是傻");
  30.                         break;
  31.                
  32.                 }               
  33.         }
  34. }
复制代码

点评

不要轻易去除break。 不然会有穿透现象  发表于 2015-4-1 15:20

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

20 个回复

倒序浏览
额!我是很傻
回复 使用道具 举报
注释掉break之后会一直执行下面的case
回复 使用道具 举报
x是6,会跳转到case 6:后的语句执行,但是因为把break注释掉了,所以会继续执行下去,直到碰到break语句才会停止的。
switch(变量){
         case 值:要执行的语句;break;
         …
         default:要执行的语句;
}
工作原理:用小括号中的变量的值依次和case后面的值进行对比,和哪个case后面的值相同了
           就执行哪个case后面的语句,如果没有相同的则执行default后面的语句;
细节:1):break是可以省略的,如果省略了就一直执行到遇到break为止;
           2):switch 后面的小括号中的变量应该是byte,char,short,int四种类型中的一种;
           3):default可以写在switch结构中的任意位置;如果将default语句放在了第一行,则不管expression与case中的value是否匹配,程序会从default开始执行直到第一个break出现。

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

回复 使用道具 举报 1 0
注释掉break
回复 使用道具 举报
这个毕老师的视频里有讲到啊,讲的很清楚
回复 使用道具 举报
花独恋水 来自手机 中级黑马 2015-4-1 13:00:56
7#
看一看,在看一看
回复 使用道具 举报
:)            
回复 使用道具 举报
努力努力~~~~~~
回复 使用道具 举报
你这是要问什么- -
回复 使用道具 举报
:handshake:handshake
回复 使用道具 举报
从case 6 开始执行语句,然后执行下面所有可执行的语句,因为没有break 知道遇到{}才会结束
回复 使用道具 举报
switch 语句遇到break或者是执行到末尾才会结束
回复 使用道具 举报
省去了break 会一直执行 直到break
回复 使用道具 举报
到break才会结束
回复 使用道具 举报
break 要注意
回复 使用道具 举报
break;continue;return三个跳转控制语句 break结束当前循环/continue  退出本次循环/return结束循环其实是结束了main方法.当你注释掉break时switch语句会一直循环至break出现,或者是一直到语句结尾
回复 使用道具 举报
楼上已给出正确答案。。。
回复 使用道具 举报
这个是从case 6 开始一直顺序执行
如果没有找到匹配的就走默认的default里的逻辑
switch语句结束就是遇到break或者走default语句 如果没有遇到break,但是匹配到了case的内容就会从匹配到得那个开始一直顺序执行,直到遇到break或者default语句
回复 使用道具 举报
switch 语句遇到break或者是执行到末尾才会结束
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马