黑马程序员技术交流社区

标题: if和else的问题 [打印本页]

作者: 夜写意    时间: 2013-8-5 18:30
标题: if和else的问题
本帖最后由 夜写意 于 2013-8-7 19:40 编辑

下面是两段代码:
代码1:
  1. if(i > 0)
  2.         return 1;
  3. else if(i < 0)
  4.         return -1;
  5. else return 0;
复制代码
代码2:
  1. if(i > 0)
  2.         return 1;
  3. if(i < 0)
  4.         return -1;
  5. return 0;
复制代码
运行的结果都是一样的。就是说else用与不用都是一样的。现在想知道他们之间有没有区别?还有就是else在什么情况下必须用?
作者: 柳小龙    时间: 2013-8-5 18:58
这两段代码是明显不同的,要是不受其他的语句或者代码块影响,或者和其他语句或代码块无关,逻辑上也没有影响,最后返回的结果肯定是一样的。要是在其他不同的使用环境下,他们的健壮性和执行效率是不一样的,我觉得代码1相对在大多情况下更为好些,if(){}esle if(){}else{}显得更加紧凑,逻辑控制更加严密些。
作者: hmYing    时间: 2013-8-5 21:29
第一段代码:if(){}else if(){}else{}是一个if结构,其中有两个条件判断
if(i > 0)
        return 1;
else if(i < 0)
        return -1;
else return 0;


第二段代码:是有两个if(){}else{}结构,完整写法:
if(i > 0){
        return 1;
}else{
        ;
}
if(i < 0)
        return -1;
return 0;
作者: hmYing    时间: 2013-8-5 21:39
第一段代码:if(){}else if(){}else{}是一个if结构,其中有两个条件判断
if(i > 0)
         return 1;
else if(i < 0)
         return -1;
else return 0;


第二段代码:是有两个if(){}else{}结构,完整写法:
if(i > 0){
         return 1;
}else{
         ;
}//第一次判断已经结束


if(i < 0){
         return -1;
}else{
         return 0;
}//第二次判断结束

如果一个if(){}else{}结构只写了if,没有else,说明它省略了else
第二段代码也可以解释为:
if(i > 0){
        return 1;
}else{
        if(i < 0){
                return -1;
         }else{
                return 0;
         }
}
作者: hmYing    时间: 2013-8-5 21:41
希望能够帮到你,为了易读性和团队开发,建议if-else都把{}写上
作者: 夜写意    时间: 2013-8-6 20:58
hmYing 发表于 2013-8-5 21:39
第一段代码:if(){}else if(){}else{}是一个if结构,其中有两个条件判断
if(i > 0)
         return 1;

:lol自己又琢磨了一下,当方法是void的时候,else就有必要了。之前绕沟里了。
作者: hmYing    时间: 2013-8-6 21:45
夜写意 发表于 2013-8-6 20:58
自己又琢磨了一下,当方法是void的时候,else就有必要了。之前绕沟里了。 ...

你明白就好!

作者: 天涯海角    时间: 2013-8-7 17:28
这两个代码在逻辑上是不一样的,虽然运行的结果一样。代码1当if()判断符合条件时就不会再判断else if(),而代码2,要对每个if语句都要进行判断,代码执行效率低。如果在判断的条件的范围不明确时最好用else。在编写代码时最好用代码1这种类型。




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