| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1440 人关注过本帖
标题:菜鸟笔记(3)switch
只看楼主 加入收藏
ccnjava
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2004-7-13
收藏
 问题点数:0 回复次数:2 
菜鸟笔记(3)switch

菜鸟笔记(3)switch

switch和if...else同属于分支语句.而且switch的功能和if...else十分相似. 大部分同样的问题,2者都可以解决. 不过如果程序要判断的状况很多,再用if...else就要欠套很多次,不仅麻烦, 而且程序也显得很乱.降低程序可读性.如果这时用switch就方便许多. switch是多分支语句,switch英文翻译过来是开关,所以也叫开关语句.

首先来看一下switch语句的格式: switch(表达式){ case value1: 语句1; 我们不妨跟if...else...格式对比一下 break; if(逻辑表达式语句) case value2: 语句2; 语句1; break; else ...... 语句2; case valueN: 语句N; break; [default:default语句] }

下面来简单解释一下上面的格式: 首先写switch(表达式),这里和"if(表达式)"一样.写一个表达式,表达式要能 得到一个vlaue. 下面是case.下面程序根据switch得到的value分别跟各自的case比较.如果相等. 那么执行case后面的语句. break.这个表示跳出整个程序.当程序执行相对应的语句后,如果后面跟了break 自动跳出程序,程序结束. [default:default语句],default为翻译过来为缺省. 这个是可有可无的.如果程序加了,它表示如果switch中的value. 再所有case中都没有相同的.那么程序将执行default语句.

如果程序没有加default语句,那么case值没有相等的话,什么也不执行. 大家可以看出switch和if...else有太多的想像,其实只是格式略有偏差而已.

光说无用,下面举几个例子,因为以前的例子都只有程序中间的部分. 前后都被我cut了.如果有人愿意试还要加.这次我把前后也都加上.

例子1:(先举一个最简单的例子)

public class L1{ public static void main(String args[]){ //开始 int i; switch(i=1){ case 1: System.out.println("您选择了1"); break; case 5: System.out.println("您选择了2"); break; case 9: System.out.println("您选择了3"); break; default: System.out.println("您没有做出选择!"); //结束 } } }

//输出为"您选择了1" 简单解释一下,switch的value为1,那么下面的case中正好有1.输出后面的 语句.然后看到后面有break.输出后结束.

下面继续跟if...else...对比,在if...else中如果要if执行多行语句 (复合语句时),要将执行的语句用{}括起来.但switch不用

public class L1{ public static void main(String args[]){ //开始 int i; switch(i=1){ case 1: System.out.println("您选择了1"); System.out.println("您选择了1"); System.out.println("您选择了1"); break; case 5: System.out.println("您选择了2"); break; case 9: System.out.println("您选择了3"); break; default: System.out.println("您没有做出选择!"); //结束 } } } 在case1后面加3行,完全没有问题. java小贴士:switch中用到了: 这是 if...else...没有的. java小贴士:switch中的break不是必须的.如果一个case后面没有break那么会 怎么样呢?看下面一个例子. 例2: public class L1{ public static void main(String args[]){ //开始 int i; switch(i=1){ case 1: System.out.println("您选择了1"); case 5: System.out.println("您选择了2"); case 9: System.out.println("您选择了3"); default: System.out.println("您没有做出选择!"); //结束 } } } 输出结果 您选择了1 您选择了2 您选择了3 您没有做出选择!

来简单说明一下,这个例子中没有一个break.我们知道break的作用 是让程序退出. 那么看这个例子,首先执行第1行.但后面没有break.程序不退出. 继续执行第2行,第2行后面依然没有break,就这样一直执行下去. 但第3行也没有,所以default也要执行. 都执行完以后程序自动退出.

之所以要举这个例子是因为要让大家记得写break...不要忘记.. 否则...程序就乱了...

java小贴士:case字句的作用只是一个标号.用来查找入口并开始执行. 一般情况下case后面都有break. java小贴士:switch和if...else...还有一点不同.switch表达式的值只 支持byte short int long char .注意它并不支持boolean! java小贴士:case字句的值必须是常数,不可为变量 可以是11.也可以是5+6.而且case的值不能相同. 这些都是基本问题了,不用多说.另外程序执行时候会将表达式值和 case值都转换成int进行比较.

java小贴士:有一点switch无法和if...else...一样 switch的case取值不可以是范围的.它不像if...else可以 if(grade>60). 而case不可以这么写,这跟它只支持常数也有关系. 所以switch不能做这类题. 摘自雨伞大人:不能,原始类型short,int,char,byte都可以,switch就是为了取代if... else..else if...这样乱的写法。 摘自类痴狂人大人:switch只能对整数起作用,不能对范围作选择。 在Core Java这本书中,作者建议少用switch(不过大家在C/C++中用惯了:) 非常感谢2位版主的解答.

结束语;如果你if...else...明白了,switch就迎刃而解了.大多不同只是而已. 其他不同只是一点点.

另注:今天的日记又完成了,耶.高兴ing. 现在无事了,很想跟各位版主大人闲聊一下.(呵呵,如果版主大人有空..) 版主大人玩游戏么?(旁人:瞧你问的问题,俗,老套)(小菜鸟:...) 以前啊我经常打cs啊,wc3,fifa,nfs等大型游戏,现在感觉腻了,只打模拟器和 vos.模拟器我再打N64的一款paper mairo(纸牌玛丽奥).Q版,超级搞笑. 强烈推荐大家一玩. 版主大人门都玩什么呢?HOHO,偶想一定是很有品味的游戏. 呵呵,好长时间没看到Anstey 版主大人了.我看其他帖子说Anstey 版主 大人人现在在外国留学? 呵呵,再插播新闻一条,,那天我看报纸说TCL出了一款38万的手机.手机上镶着3 颗南非天然钻石.其他材料手机的屏幕是蓝宝石做的.其他外壳是黄金做的...HOHO 据说手感极佳.按键不已磨损等等特点.(^.^"我的手机价值还没它一个按键值钱 ...什么世道啊) 现在已经钞的沸沸扬扬.

废话完了...小菜菜告退...

搜索更多相关主题的帖子: switch 笔记 
2004-08-12 19:25
taizifeng
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2004-9-18
收藏
得分:0 

还 好 啊

让我明白了一个问题

2004-09-18 15:34
fanhuaxing
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2005-11-16
收藏
得分:0 
楼主讲得很详细
2007-11-12 17:05
快速回复:菜鸟笔记(3)switch
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017474 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved