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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夜写意 中级黑马   /  2013-8-5 18:30  /  1337 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 夜写意 于 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在什么情况下必须用?

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

7 个回复

倒序浏览
这两段代码是明显不同的,要是不受其他的语句或者代码块影响,或者和其他语句或代码块无关,逻辑上也没有影响,最后返回的结果肯定是一样的。要是在其他不同的使用环境下,他们的健壮性和执行效率是不一样的,我觉得代码1相对在大多情况下更为好些,if(){}esle if(){}else{}显得更加紧凑,逻辑控制更加严密些。

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
第一段代码: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;

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
第一段代码: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;
         }
}
回复 使用道具 举报
希望能够帮到你,为了易读性和团队开发,建议if-else都把{}写上
回复 使用道具 举报
hmYing 发表于 2013-8-5 21:39
第一段代码:if(){}else if(){}else{}是一个if结构,其中有两个条件判断
if(i > 0)
         return 1;

:lol自己又琢磨了一下,当方法是void的时候,else就有必要了。之前绕沟里了。
回复 使用道具 举报
夜写意 发表于 2013-8-6 20:58
自己又琢磨了一下,当方法是void的时候,else就有必要了。之前绕沟里了。 ...

你明白就好!
回复 使用道具 举报
这两个代码在逻辑上是不一样的,虽然运行的结果一样。代码1当if()判断符合条件时就不会再判断else if(),而代码2,要对每个if语句都要进行判断,代码执行效率低。如果在判断的条件的范围不明确时最好用else。在编写代码时最好用代码1这种类型。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马