for(int i=1;i<=100;i++)
{
switch(i)
{
case 6:
System.out.println(i);
case 66:
System.out.println(i);
case 96:
System.out.println(i);
}
}去掉break后,结果为
6
6
6
66
66
96
为什么6会出现3次其他2次,代码在C++里运行结果正好相反96出现3次其他2次。
break的作用不就是找到一个结果,就不用浪费时间再执行下面的代码,因为下面的代码肯定对不到了。为什么6会有3次相等呢?
{
switch(i)
{
case 6:
System.out.println(i);
case 66:
System.out.println(i);
case 96:
System.out.println(i);
}
}去掉break后,结果为
6
6
6
66
66
96
为什么6会出现3次其他2次,代码在C++里运行结果正好相反96出现3次其他2次。
break的作用不就是找到一个结果,就不用浪费时间再执行下面的代码,因为下面的代码肯定对不到了。为什么6会有3次相等呢?
case 6:
case 66:
case 96:
3个print都执行了i = 66:
case 66:
case 96:
这两个都执行了你换一下case顺序,仍旧不加break,再试一下,就会更清楚
int i = 6;
switch (i) {
case 6:
System.out.println(i);
case 66:
System.out.println(i);
case 96:
System.out.println(i);
}
反正java的代码相当于goto ":label" + i;:label6
System.out.println(i);
// break相当于goto breakEnd;
:label66
System.out.println(i);
:label96
System.out.println(i);
:switchEnd
三次的打印 System.out.println(i); 都是 6第二次是 66;
第一个System.out.println(i)不执行,因为case i的值=6;
所以 向下执行两次; i=66;第三次 类似。 i=99输出,因为它满足最后一个条件。如果去掉break,所有的case都会进去,都会访问到。
如果break保留,遇到break就出来了,不会向下访问
i = 6
case 6:
case 66:
case 96:
3个print都执行了i = 66:
case 66:
case 96:
这两个都执行了i=96:
case 96:
结束
break的作用不仅仅是为了节省时间,你用不用break 以下case都不会再去判断
如果不用break 会顺序执行结构内除case语句意外的其他语句
如果用了break 程序会在遇到break 时 跳出该结构 break 以下的语句本次将不再执行
如果不用break 会顺序执行结构内除case语句以外的其他语句
如果用了break 程序会在遇到break 时 跳出该结构 break 以下的语句本次将不再执行
{
switch(i)
{
case 6:
System.out.println(i);
case 66:
System.out.println(i);
case 96:
System.out.println(i);
}
}
楼主搞错了吧..在JAVA和C++里执行结果是一样的..都是
6
6
6
66
66
96