黑马程序员技术交流社区

标题: 关于Switch选择结构的总结与大家分享~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [打印本页]

作者: 李斌    时间: 2012-5-20 00:14
标题: 关于Switch选择结构的总结与大家分享~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
本帖最后由 李斌 于 2012-5-20 00:20 编辑

以前一直对于Switch语句的执行过程很模糊,今天用代码检测一下了 终于弄得很清楚了,与大家分享一下~
class SwitchTest
{
        public static void main(String[] args)
        {
                int x=2,y=3;
                switch(x)
                {
                        case 5:
                                y++;
                                System.out.println("case 5="+y);
                        default:
                                y++;
                                System.out.println("default="+y);
                                break;
                        //case 2:
                                //y++;
                                //System.out.println("case 2="+y);
                                //break;
                        case 3:
                                y++;
                                System.out.println("case 3="+y);
                                //break;
                        
                        case 4:
                                y++;
                                System.out.println("case 4="+y);
                        
                }
                System.out.println(y);
        }
}
/*
注意:case的执行顺序问题
                        表达式为x=2 case可能值分别为 2、3、4
                        第一步:先找是否有符合表达式x=2的case语句
                                        |——————————有,则执行case2的语句,并且就不执行default语句!
                                第二步:        |--------case2语句中没有break语句,执行完该句就执行其他下一个(注意是下一句,它不往回执行前一case语句)case语句直到break或者}为止。
                                                        |--------case2语句中有break语句,执行完该句就跳出循环。
                                        |———————————没有,则执行default语句
                                                        |--------default语句中没有break语句,则在执行完该句就执行其他下一句(注意是下一句)case语句直到break或者}为止。
                                                        |--------default语句有break语句,则在执行完该句就跳出循环。
*/


作者: xieshuhua    时间: 2012-5-20 00:25
哥们,你总结的挺全的,我也没什么好补充的,同样是熬夜男,必须顶你一下。
作者: 李斌    时间: 2012-5-20 00:32
谢述华 发表于 2012-5-20 00:25
哥们,你总结的挺全的,我也没什么好补充的,同样是熬夜男,必须顶你一下。 ...

嘿嘿 加油~~
作者: 杨康    时间: 2012-5-20 00:58
x=2 不是就执行case2那一句就完了吗
作者: 李斌    时间: 2012-5-20 00:59
本帖最后由 李斌 于 2012-5-20 01:01 编辑
杨康 发表于 2012-5-20 00:58
x=2 不是就执行case2那一句就完了吗

不对 还要看case2语句有没有break 如果有则跳出循环 没有则执行它后面的case语句 fault语句除外~
我上面的代码可以把规律总结出来的 哦
不信你敲敲看 嘿嘿~
作者: 李保成    时间: 2012-5-20 08:26
switch语句:

通过switch...case...default语句控制程序流程。

根据switch后括号中的值判断运行哪一个case,这个值可以是byte、short、ch;ar、int。

default语句是可选的,如果所有case都不满足,则会执行default。

一旦匹配到一个case,程序就会从这个case向下执行,执行完一个case之后不会跳过其他的case,如需跳过请使用break。


.if和switch的应用:

if:

   1.对具体的值进行判断。

   2.对区间判断。

   3.对运算结果是boolean类型的表达式进行判断。



switch:

   1.对具体的值进行判断。

   2.值的个数通常是固定的。(功能差,书写麻烦)

   对于几个固定的值的判断,建议使用switch语句,因为switch语句会将具体的答案都加载进内存,

   效率相对高点。

作者: 荣天    时间: 2012-5-20 08:53
默默的 顶一个  
作者: 杨康    时间: 2012-5-20 11:12
李斌 发表于 2012-5-20 00:59
不对 还要看case2语句有没有break 如果有则跳出循环 没有则执行它后面的case语句 fault语句除外~
我上面的 ...

不是  我的意思就是 按照你的代码 执行到case2  ,已经满足条件,这时候不再进行下去,直接打印输出case2=4
y=4
不对吗?
作者: 于陈    时间: 2012-5-20 15:23
飘过~~ ~~~~~~~~~
作者: 李斌    时间: 2012-5-20 16:37
杨康 发表于 2012-5-20 11:12
不是  我的意思就是 按照你的代码 执行到case2  ,已经满足条件,这时候不再进行下去,直接打印输出case2 ...

我写的代码 可以用来得出那个结论,每个case语句后面都有对应的输出语句 这样就可以知道哪些语句执行了呀
你的问题 我不是很明白
你去敲一下代码检查一下吧
嘿嘿~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2