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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马无敌   /  2015-7-11 10:43  /  19737 人查看  /  83 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

后面说错了,即使default放在最前面,程序也是从第一个case值开始执行,最后都没有匹配值才在default上找
回复 使用道具 举报
不是的,与case的值不匹配后,才开始从default处执行,直到遇到break
回复 使用道具 举报
你在Xcode里面试一试不就知道了吗
回复 使用道具 举报
这个没有错,因为如果第一个case中得值没有符合要求的话就会判断下一个case的值,如果所有case的值都不满足的话,就会执行default语句
回复 使用道具 举报
本帖最后由 wayonEmes 于 2015-7-25 18:32 编辑

是这样的,无论default在任何位置,switch语句都是从上往下的第一个case开始匹配,如果匹配到合适的case,那么就不再进行判断,直接运行下面的语句直到遇到break或执行到最后一行;如果没有匹配到合适的case,就执行default中的语句,然后一直执行到最后一行或遇到break
比如
int a =1;
switch(a){
    case 1:
    System.out.println("a=1");    break;
    default:
    System.out.println("haha");
}
那么输出结果是:

a=1


int a =1;
switch(a){
    case 1:
    System.out.println("a=1");//注意:没有break    default:
    System.out.println("haha");
}
那么输出结果是:


a=1
haha


int a =2;//a变成了2
switch(a){
    default:
    System.out.println("haha");
    case 1:
    System.out.println("a=1");}
那么输出结果是:


haha
a=1
回复 使用道具 举报
先执行case语句再执行default
回复 使用道具 举报
学习学习
回复 使用道具 举报
是错的   首先应该是从第一case执行
回复 使用道具 举报
学习学习..
回复 使用道具 举报
这个应该是错的,default是当switch(a)中a没有对应选项时才会去进行default选项的。
回复 使用道具 举报
同样有困惑
回复 使用道具 举报
不管default放在前面,后面,还是中间,都应该先匹配其他的case取值,如果都找不到最后才匹配default(当然default就是为了其他case取值都不匹配express的情况而存在的,所以default要最后才匹配)。当匹配成功后,会开始执行语句,如果匹配成功的语句执行结束后,也没有遇到break或者大括号下部,这时候程序会继续按照从上到下的顺序,执行其他匹配不成功的语句,直到遇到第一个break或者大括号下部,跳出循环。
楼主啥时候给分啊,我看这提问时间,楼主是弃楼了么?
回复 使用道具 举报
先纠正你一点,如果执行语句中有break,那么就会停止执行。如果没有break才行在case执行完后执行default,default仍然没有break的话,才会继续向下执行,知道碰到第一个break,或者说是把代码执行完。
回复 使用道具 举报
default可以放在代码块任何位置,但是从case开始匹配,到break退出,如果没有合适的case 执行default,到break退出,如果没有break,执行到代码块结束退出
回复 使用道具 举报
这句话是正确的,default可以放在最上面,但是执行的话还是从case开始执行的,遇到break就停止了,希望我 说的对你是有帮助的  谢谢
回复 使用道具 举报
先执行case,default 是最后在执行的。
回复 使用道具 举报
default可以写在switch结构中的任意位置;是对的,后半句错误
如果将default语句放在了第一行,程序仍会从catch开始执行,
     若有匹配的,则直接执行,到break结束;
     若无匹配的,则执行default执行到break或}结束(在此期间不进行判断)。

回复 使用道具 举报
本来想解答,但看到楼上的回答都挺详细的,我就不多说了。关键:1,无论怎样的顺序,都是先执行case,当case的值都不符合时,擦会执行default。2,在所有的case中,一般都应该有break。如果break不全的话,就会从符合条件的值开始执行,直到遇到下一个break。
回复 使用道具 举报
switch语句是个选择语句
     switch语句格式:
                switch(表达式) {
                        case 值1:
                                语句体1;
                                break;
                    case 值2:
                                语句体2;
                                break;
                    …
                    default:        
                                语句   n;
                                break;
                }
回复 使用道具 举报
为什么问题屏蔽了,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马