switch case default 语句的的使用以及注意事项

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HBL6016/article/details/42082145
首先我们来看一下它们基本的定义
switch(表达式)
{
case 取值1:
输出语句;
break;
。。。。
default:
输出语句;
break;
}
上面的运行流程是这样的,
1.从switch语句开始,看switch后面括号内的表达式,然后进行下一步。
2.找到case里面那个取值与表达式满足,就执行哪一个case,然后break跳出程序。如果
所有的case都不满足表达式,那么就运行下一步。
3.当case 都不满足时,执行default语句,输出结果。
实例如下:
class Demo4 
{
public static void main(String[] args) 
{
int x=3,k=2;
default:
System.out.println(k+=4);
break;
switch (x)
{
case 1:
System.out.println(k+=1);
break;
case 2:
System.out.println(k+=2);
break;
case 3:
System.out.println(k+=3);
break;


}
}
}
输出的结果为5;
思考:
1.若将default的位置换到case 1 上面那么结果是不是还是5呢?
答案是肯定的,无论default的位置在哪里,输出的结果都没有问题,都会与default在最下面一样。


2.若是case 3 内的break;忘记加了结果会怎么样呢?
则输出结果为5和9;这是因为缺少break导致case穿透,继续执行了case 3 后面的default;如果现在把
default挪到case 1 上面则输出结果就会是5。


3.如果把所有的break都去掉,则输出结果和default的位置会输出什么不同的结果
输出结果为5和9;把default放在其他位置结果还是5;


4.如果把x的值改为5没有break则造成的结果是什么?
class Demo4 
{
public static void main(String[] args) 
{
int x=5,k=2;
switch (x)
{
case 1:
System.out.println(k+=1);
case 2:
System.out.println(k+=2);
case 3:
System.out.println(k+=3);
default:
System.out.println(k+=4);
}
}
}
default在最下面则结果为6,当default在case 1 上面时则输出结果为6 7 9和12,造成这种结果的原因是
case穿透,即当读完default的时候,没有跳出程序,继续读取case 1 然后 case 2 ,case 3 。若把default
放在case 1 和case 2 之间,则输出结果为6 8和11 ,故总结为:若switch中所有的case与表达式不匹配,读
default后,若都没有break结束,则default在哪里他前面的case都会被它吃掉,不会读取,只能读取default以及
它之后的case。
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页