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

© 403383221 中级黑马   /  2013-5-1 21:24  /  2484 人查看  /  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 个回复

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

查看全部评分

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

多谢多谢
回复 使用道具 举报
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

查看全部评分

回复 使用道具 举报
用else if执行的效率及性能比较高

评分

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

查看全部评分

回复 使用道具 举报
殇_心。 发表于 2013-5-1 21:34
有。
if(语句1)...else(语句2) 如果语句1为true  语句2不执行。是一条语句。
if(语句1)...if(语句2 ...

那那段程序加上else会不会好一点??
回复 使用道具 举报
有区别  
第一种是 如果if成立了则不去判断else if 和执行else if 里面的代码
如果if不成立则去判断else if 是否成立然后再去判断是否执行里面的代码
也就是说else if的是否执行和if相关
第二种不管第一个if 成立与否都会去判断第二个if语句并且判断是否去执行里面的代码
也就是第二个if是否执行与第一个if无关
回复 使用道具 举报

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

评分

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

查看全部评分

回复 使用道具 举报
有区别啊!
第一种的性能比较高,只要if满足了条件else if就不会执行了
而第二中不管第一个满不满足都会执行,就是说jvm有可能会多执行一次,
假如if判断多了,就会影响性能

评分

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

查看全部评分

回复 使用道具 举报
有。
if(语句1)...else(语句2) 如果语句1为true  语句2不执行。是一条语句。
if(语句1)...if(语句2) 无论语句1结果如何。语句2都执行。是2条语句。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马