• Java 流程控制 之 分支结构(条件判断)


    一、if-else 判断结构

      if 语句有三种格式:

      1、单 if 语句(单分支结构)

        语法格式:

    if(条件表达式){
      语句体;
    }

        执行流程:

        •   首先判断条件表达式看其结果是 true 还是 false;
        •   如果是 true 就执行语句体;
        •   如果是 false 就不执行语句体。

        流程图:

        

        Tips:当 if 后面只有一条语句时,可以省略 “{}”,但为了增强程序的可读性最好不要省略。 

      2、if...else 语句(标准的 if 语句)(双分支结构)

        语法格式

    if (条件表达式) {

      执行代码块1;

    } else {

      执行代码块2;

    }

        执行流程

        •  首先判断关系表达式看其结果是 true 还是  false; 
        •     如果是 true 就执行语句体1; 
        •     如果是 false 就执行语句体2;

        流程图

        

      3、if...else if...else 语句(多分支结构)

        语法格式

    if (条件表达式1) {
      执行语句1;
    } else if (条件表达式2) {
      执行语句2;
    }
    ...
    }else if (条件表达式n) {
      执行语句n;
    } else {
      执行语句n+1;
    }

        执行流程

        •   首先判断关系表达式1 看其结果是 true 还是 false;
        •     如果是 true就执行语句体1;
        •      如果是 false 就继续判断关系表达式2看其结果是 true 还是 false;
        •      如果是 true 就执行语句体 2;
        •      如果是 false 就继续判断关系表达式... 看其结果是 true 还是  false;
        •      .....
        •      如果没有任何关系表达式为 true,就执行语句体 n+1

        流程图:

        

      4、if 语句和三元运算符的互换

        在某些简单的应用中, 可以使用 if...else 语句和三元运算符互换使用的。这样看起来更简便一些。

        当即可以使用三元运算符和 if 时,优先使用 三元运算符,看起来简洁,效率也高。

        Demo:

    public static void main(String[] args) {
       int a = 10;
       int b = 20;
       //定义变量,保存a和b的较大值
       int c;
       if(a > b) {
         c = a;
       } else {
         c = b;
       }
       //可以上述功能改写为三元运算符形式
       c = a > b ? a:b;
    }
    

      

      5、if-else 使用说明

        (1)条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量 ;

        (2)语句块只有一条执行语句时,一对{}可以省略,但建议保留;

        (3)if-else语句结构,根据需要可以嵌套使用 ;

        (4)当 if-else 结构是“多选一”时,最后的 else 是可选的,根据需要可以省略 ;

        (5)当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓,当多个条件是“包含”关系时,“小上大下 / 子上父下” ;

      Demo:

    public static void main(String[] args) {
      int x = 4;
      int y = 1;
      if (x > 2) 
        if (y > 2) 
          System.out.println(x + y);
        else //就近原则
          System.out.println("x is " + x);                
    

      如果if 后面省略了 {},那么 else 会匹配到最新的 if(就近原则)。

    二、switch-case 结构

      1、switch-case 结构

        语法格式

    switch(表达式) {
    case 常量值1:
      语句体1;
      [break;]
    case 常量值2:
      语句体2;
      [break;]
    ...
    default:
      语句体n+1;
      [break;]
    }

        执行流程

        •  首先计算出表达式的值
        •    其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。
        •    最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

        流程图

        

        说明:

        (1)多个 case 后面的数值不可以重复,不能是变量名或不确定的表达式值,切必须是常量值,不能声明范围;

        (2)switch 语句中,表达式的六种数据类型,可以是byte,short,int,char,Enum(枚举JDK1.5之后),String(JDK1.7之后)

        (3)根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。

            注意当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾结束为止。

        (4)break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构;

        (5)break 关键字是可选的;

        (6)switch 语句格式可以很灵活:前后顺序可以颠倒,而且break语句还可以省略。匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止;

        (7)default 语句是可选的,也可以写到任意位置,不一定会写在最后

      2、case 的穿透性

        在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运 行,直到遇到break,或者整体switch结束。

        Demo:

    public static void main(String[] args) {
       int i = 5;
     switch (i){
       case 0:
         System.out.println("执行case0");
         break;
       case 5:
         System.out.println("执行case5");
       case 10:
         System.out.println("执行case10");
       default:
         System.out.println("执行default");
       }
    }
    

        上述程序中,执行case5后,由于没有break语句,程序会一直向后走,不会在判断case,也不会理会break,直接 运行完整体switch。

         Tips:在使用 switch 语句时,写上  break 语句是非常有必要的。

      3、switch与 if

        (1)凡是可以使用switch-case的结构,都可以转换为if-else。反之,不成立。

        (2)写分支结构时,当发现既可以使用switch-case,(同时,switch中表达式的取值情况不太多),又可以使用if-else时,我们优先选择使用switch-case。原因:switch-case执行效率稍高。

     

  • 相关阅读:
    正式班D25
    解决oracle用户锁定
    python学习第17天
    python学习第16天
    python学习第15天
    python学习第十四天
    python学习第13天
    Python基础
    python学习第12天
    python学习第11天
  • 原文地址:https://www.cnblogs.com/niujifei/p/13584837.html
Copyright © 2020-2023  润新知