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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张建国 于 2013-4-17 09:28 编辑

选择结构中,对于if句式和switch句式分别在什么情况下用比较好?
或者说哪个语句最好用啊,是不是有特定的情况?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

5 个回复

倒序浏览
答题开始
问题:选择结构中,对于if句式和switch句式分别在什么情况下用比较好?
答:我们先从用途上来说
1.如果纯粹比较数字或字符,建议使用switch,因为它只会在一开始的switch括号中取出变量值一次,然后将这个值与下面所设定的case比较,但如果使用if,每次遇到条件式时,都要取出变量值,效率的差异就在这儿
2.但是遇到复合条件时,switch就帮不上忙了,由于无法在switch中组合复杂的条件语句,这时就得使用if了。简单地说,if与switch两者可以搭配着灵活使用
代码例子:
第一种情况:
if(a==1)
else if(a==2)
else if(a==3)
//这样子你看着都累,不效率
第二种情况:
switch(a)
{
case 1:

break;
case 2:

break;
case 3:

break;
}
这样设置 一看你就明白了吧!
小结:可以混合使用,但是具体还是按照你所需要的业务来判断!多做点例子就明白了!
希望我的回答对您有所帮助!

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
这个倒是没有好坏之分。
如果判断条件比较少的话  推荐使用 if.. else 结构
如果稍多的话  就推荐使用switch 咯。
回复 使用道具 举报
给你举两个例子吧,
1、如果num这个变量大于0时,就在控制台上打印“正数”。否则打印“负数”
这时我们就要用if语句,因为情况就少。

2如果num这变量存的是当前日期在这个星期中为第几天,如果num值为1时,就在控制台打印“今天是星期一”,如果num值是2时,就打印“今天是星期二”以此类推。
这时我们就用switch语句。。  因为num的情况有很多种。
如果用if语句那代码写起来太麻烦了,而且不效率。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
个人的总结,希望对你有帮助:
A:当对某几个值进行判断的时候,可以使用if语句,或者switch语句。
建议使用switch。但是,使用switch要注意,它只能操作四种类型的值,byte,short,int,char。
如果是四种以外的值,需要使用if。

B:如果对数据区间进行判断,或者对运算结果是boolean类型的进行判断,用if语句。

C:当需要某些语句执行很多次的时候,使用循环结构。如果定义变量只为循环增量存在时,可以使用for语句。
如果对一个条件进行一次判断使用if,如果对该条件进行多次判断,使用while

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 PANZERLEADER 于 2013-4-16 23:03 编辑

if判断结构基本上可以解决所有的需要判断的问题。
而switch选择结构只能用于有限项选择的问题中(这意味着,如果需求里要判断的值在一个连续的范围内变动,switch就无法使用了)
而且用作判断的key只能是除了long以外的整形、String类型和枚举变量,不如if能适应更多的需求。

但是在选项比较少的情况下,switch选择结构能够较快的选择出正确的选项。
而不像if判断结构那样需要多层判断来选择合适的选项,可以省去不必要的判断步骤。
  1.    switch (key) {
  2.                         case value1:         代码块1……;
  3.                         case value2:        代码块2……;
  4.                         case value3:        代码块3……;
  5.                         case value4:        代码块4……;
  6.                                 break;

  7.                         default:
  8.                                 break;
  9.                         }
复制代码
上面的switch明显看起来更直观,而下面的if则看起来更别扭。而且下面的if,如果key值是value4,则在执行时,需要先做前面的3个判断才能到达第四个判断。
  1.    if (key==value1) {
  2.                                 代码块1……;
  3.                         } else if(key==value1){
  4.                                 代码块2……;
  5.                         }else if(key==value3){
  6.                                 代码块3……;
  7.                         }else{
  8.                                 代码块4……;
  9.                         }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马