黑马程序员技术交流社区
标题:
Switch语句中defaut用法迷惑!
[打印本页]
作者:
hejinzhong
时间:
2014-7-8 01:50
标题:
Switch语句中defaut用法迷惑!
都知道在选择语句switch中,先判断case语句后的各种情况,且每个语句的顺序没有关系,那么如果defaut不在最后一行且没有break,那么还会去重复执行他后面的case语句吗?
class Demo
{
public static void main(String[] args)
{
int num = 3;
switch(num)
{
case 1:
System.out.println("1");
break;
case 2:
System.out.println("1");
break;
default:
System.out.println("0");
num++;
case 4:
System.out.println("4");
break;
}
}
}
这个程序开始时候已经判断过case 4,那么再执行玩default后,还会去访问吗?为什么?
作者:
‖▍°_拾光
时间:
2014-7-8 08:00
先输出0,执行完default后,因为没有break,所以继续想下运行,执行case4里面的代码,输出4,遇到break,立刻跳出switch了呀。
作者:
001可望成功
时间:
2014-7-8 08:01
会,default的意思是前面的几种情况都不是的话,执行default,其实他和普通的case是一样的
作者:
裤裆里的温柔、
时间:
2014-7-8 12:26
这个东西不用太刻意专研,一般不会那样写,会用会写就OK了
作者:
嗅ㄨiaǒ孑
时间:
2014-7-8 12:40
这样写太别扭了
作者:
寻得美好
时间:
2014-7-8 12:58
switch(num)
{
case :语句;
break;
default:
语句;
case:
语句;
} 语句执行时无论是case后的语句还是default后的语句;执行完后如果没有break跳出则继续向下不再判断,只执行语句直到遇到break或者switch结束的大括号
作者:
⋛⋌⋚JEEP
时间:
2014-7-8 13:32
本帖最后由 ⋛⋌⋚JEEP 于 2014-7-8 13:38 编辑
其实前面的都说的清楚了。我全面的补充说明一下吧{:3_57:}
1、default语句是switch语句判断完case语句后不满足条件才执行的,所以无论default放在什么位置,switch最后才执行default;
2、switch语句是自然顺序从小到大执行case语句的;switch(int num)中的参数满足case num,就只执行case语句,都不满足就执行default语句;
3、一般情况下,我们都习惯把default放在最后,但是如果default不在最后而是放在case语句中间或者句首的位置,是否有区别呢?这个需要看default语句末尾处是否加了break。加了,执行default语句的时候,遇到break会正常跳出switch;如果没有加,执行完default语句后会继续执行它下面的case语句直到遇到break或者 “}”结束。
4、所以,在用switch语句时,最好的办法就是每一句case和default语句后面都加上break。
复制代码
综合陈述,lz大可用你的代码试验一遍!
作者:
hejinzhong
时间:
2014-7-8 18:24
总结和实践表明,在switch中,最后去寻找default语句,且是否结束执行要看是否遇见break或者到达最后一行语句。谢谢各位。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2