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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hejinzhong 中级黑马   /  2014-7-8 01:50  /  2928 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

都知道在选择语句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后,还会去访问吗?为什么?

7 个回复

倒序浏览
先输出0,执行完default后,因为没有break,所以继续想下运行,执行case4里面的代码,输出4,遇到break,立刻跳出switch了呀。
回复 使用道具 举报
会,default的意思是前面的几种情况都不是的话,执行default,其实他和普通的case是一样的
回复 使用道具 举报
这个东西不用太刻意专研,一般不会那样写,会用会写就OK了
回复 使用道具 举报
这样写太别扭了
回复 使用道具 举报
switch(num)
{
    case :语句;
    break;
    default:
          语句;
    case:
        语句;
} 语句执行时无论是case后的语句还是default后的语句;执行完后如果没有break跳出则继续向下不再判断,只执行语句直到遇到break或者switch结束的大括号
回复 使用道具 举报
本帖最后由 ⋛⋌⋚JEEP 于 2014-7-8 13:38 编辑

        其实前面的都说的清楚了。我全面的补充说明一下吧{:3_57:}
  1. 1、default语句是switch语句判断完case语句后不满足条件才执行的,所以无论default放在什么位置,switch最后才执行default;
  2. 2、switch语句是自然顺序从小到大执行case语句的;switch(int num)中的参数满足case num,就只执行case语句,都不满足就执行default语句;
  3. 3、一般情况下,我们都习惯把default放在最后,但是如果default不在最后而是放在case语句中间或者句首的位置,是否有区别呢?这个需要看default语句末尾处是否加了break。加了,执行default语句的时候,遇到break会正常跳出switch;如果没有加,执行完default语句后会继续执行它下面的case语句直到遇到break或者 “}”结束。
  4. 4、所以,在用switch语句时,最好的办法就是每一句case和default语句后面都加上break。
复制代码

       综合陈述,lz大可用你的代码试验一遍!
回复 使用道具 举报
总结和实践表明,在switch中,最后去寻找default语句,且是否结束执行要看是否遇见break或者到达最后一行语句。谢谢各位。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马