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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 403383221 中级黑马   /  2013-5-1 21:24  /  2125 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 403383221 于 2013-5-2 09:08 编辑

这种写法
if(){
   
  }else if(){
   
  }
和这种写法
if(){
   
  }
if(){
   
  }
有区别吗??
毕老师哦没加那个红色的else,如果加上是不是好一点??
public static void main(String[] args) throws IOException {
  // TODO Auto-generated method stub
  InputStream in = System.in;
  StringBuilder sb = new StringBuilder();
  
  while(true){
   int ch = in.read();
   if(ch == '\r'){
    continue;
   }
   else if(ch == '\n'){
    String s = sb.toString();
    if("over".equals(s)){
     break;
    }
    System.out.println(s.toUpperCase());
    sb.delete(0, sb.length());
   }
   else
    sb.append((char)ch);
  }
}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

13 个回复

倒序浏览
有。
if(语句1)...else(语句2) 如果语句1为true  语句2不执行。是一条语句。
if(语句1)...if(语句2) 无论语句1结果如何。语句2都执行。是2条语句。
回复 使用道具 举报
有区别啊!
第一种的性能比较高,只要if满足了条件else if就不会执行了
而第二中不管第一个满不满足都会执行,就是说jvm有可能会多执行一次,
假如if判断多了,就会影响性能

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
我觉得如果不提特定的及编码规则的话,这两种没什么区别。
else if仅仅是else语句后面跟了一个新的if ,本质上,第一种写法多了else ;第二种写法没有else

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报

第一种如果执行满足第一个if就不执行else,
第二种如果第一个if里面没有return语句就会执行第二个if。
回复 使用道具 举报
有区别  
第一种是 如果if成立了则不去判断else if 和执行else if 里面的代码
如果if不成立则去判断else if 是否成立然后再去判断是否执行里面的代码
也就是说else if的是否执行和if相关
第二种不管第一个if 成立与否都会去判断第二个if语句并且判断是否去执行里面的代码
也就是第二个if是否执行与第一个if无关
回复 使用道具 举报
殇_心。 发表于 2013-5-1 21:34
有。
if(语句1)...else(语句2) 如果语句1为true  语句2不执行。是一条语句。
if(语句1)...if(语句2 ...

那那段程序加上else会不会好一点??
回复 使用道具 举报
用else if执行的效率及性能比较高

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
if(){}else if(){}和这种写法if(){}if(){}的区分属于逻辑上的条件判断方式区别,逻辑结构图如下图所示:
if(){}if(){}在逻辑上的条件删选我个人理解是平行的条件删选,if(){}else if(){}在逻辑上的条件删选我个人认为是阶梯状删选;举实例说明如下:(判断分数等级)
public class Text6 {


        public static void main(String[] args) {
                int score=76;   //分数
                char grade;   //等级
                if(score>=90)
                {
                        grade='A';
                }
                else if(score>=80)
                {
                        grade='B';
                }
                else if(score>=70)
                {
                        grade='c';
                }
                else if(score>=60)
                {
                        grade='D';
                }
                else
                {
                        grade='E';
                }
                System.out.println("成绩等级是:"+grade);
               
        }

}











public class Text7 {

       
        public static void main(String[] args) {
               
                int score=76;   //分数
                char grade;   //等级
                if(score>=90)
                {
                        grade='A';
                }
                else if(score>=80&&score<90)
                {
                        grade='B';
                }
                else if(score>=70&&score<80)
                {
                        grade='c';
                }
                else if(score>=60&&score<60)
                {
                        grade='D';
                }
                else
                {
                        grade='E';
                }
                System.out.println("成绩等级是:"+grade);
        }

}

1.jpg (31.94 KB, 下载次数: 0)

1.jpg

2.jpg (676.69 KB, 下载次数: 0)

2.jpg

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
杨兴庭 发表于 2013-5-1 22:25
if(){}else if(){}和这种写法if(){}if(){}的区分属于逻辑上的条件判断方式区别,逻辑结构图如下图所示:
if ...

多谢多谢
回复 使用道具 举报
本帖最后由 花开花落总相似 于 2013-5-1 22:35 编辑

  嘿嘿  正好笔记整理到这里  复制发给你  例子我就没有写
if语句
        if语句的语法格式为:
                if(条件表达式)
                        s1语句:
        这是最简单的分支结构。条件表达式为true,就执行s1语句,否则就忽略s1语句,s1语句可以是复合语句。
2.2.2     if……else 语句
        if(条件表达式)
                s1语句;
else
        s2语句;
当表达式的值为true,就执行s1语句,忽略else和s2语句;条件表达式的值为false,程序忽略s1语句,执行else后面的s2语句。s1和s2语句都可以是复合语句。
2.2.3        if….else 复合结构
        对于复杂的情况,可以嵌套使用if…else 语句。它的语法格式为:
        if(条件表达式1)
                s1语句:
        else if(条件表达式2)
                s2语句;
        else
                s3语句;
   在这里依次计算表达式,如果某个表达式的值为true,就执行他后面的语句,其余部分被忽略,所有表达式的值都为false时,就执行最后一个else后面的s3语句。s1,s2,s3语句都可以是复合语句。        

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
有区别。if语句,执行的是当满足小括号中内容的时候,执行大括号中的语句。遇到分号结束。而if else则是一旦上面的if后面小括号的内容不满足,立即判断if else后面的条件语句,比单if语句的结构复杂。
回复 使用道具 举报
我今天想出来了,这两种写法其实有区别,用一个小例子来说明:
比如,有一个参数n,当n>1时,打印:买一注;
                   当n>-1时,打印:买两注;
                   当n>-2时,打印:买三注;

这种情况用if(){....}
               if(){....}  就不行,你总不能说if(n>-1) 就果断打印:买两注吧(这是不精确的)。如果n=5呢,这种情况是不是得打印:买一注?
所以像这种情况就得用if(){}else if(){}
即:
if(n>1)
  打印:买一注;
else if (n>-1)  //这句的意思是:否则n不大于1的情况下,如果n>-1.
  打印:买两注;
else if (n>-2)  //否则n不大于1的情况下,如果n>-2.
  打印:买三注;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马