• 2.4 选择结构语句


     思维导图:

     2.4.1 If条件语句

    ### 2.4 选择结构语句

    在实际的编程过程中,经常需要根据条件执行不同的代码块,这就是选择结构的作用。Java提供了多种选择语句,如`if`、`if...else`、`if...else if...else`和`switch`语句。

    **2.4.1 if条件语句**

    - **基本概念:** `if`语句允许根据一个布尔条件执行代码。如果条件为真,则执行`if`块内的语句。

    1.   if (判断条件) {
    2.       执行语句;
    3.   }

    - **示例:** 小明的妈妈告诉他,如果考试得满分,则他们会去游乐场。

    1. if (小明的分数 == 100) {
    2.       去游乐场;
    3.   }

    **文件2-7示例:**
    此示例展示了如何使用`if`语句来判断一个整数的值。

    1. public class Example07 {
    2.     public static void main(String[] args) {
    3.         int x = 5;
    4.         if (x < 10) {
    5.             x++;
    6.         }
    7.         System.out.println("x=" + x);
    8.     }
    9. }

    **2.4.2 if...else语句**

    - **基本概念:** `if...else`语句不仅可以根据一个布尔条件执行代码,还可以在条件为假时执行另一个代码块。

    - **语法:**
     

    1. if (判断条件) {
    2.       执行语句1;
    3.   } else {
    4.       执行语句2;
    5.   }

    - **示例:** 判断一个整数是奇数还是偶数。

    1.   if (num % 2 == 0) {
    2.       System.out.println("num是一个偶数");
    3.   } else {
    4.       System.out.println("num是一个奇数");
    5.   }

    **2.4.3 if...else if...else语句**

    - **基本概念:** 当存在多个条件需要判断时,可以使用`if...else if...else`结构。该结构可以有一个或多个`else if`部分。

    - **语法:**
     

    1.   if (判断条件1) {
    2.       执行语句1;
    3.   } else if (判断条件2) {
    4.       执行语句2;
    5.   } ...
    6.   else {
    7.       执行语句n;
    8.   }

    - **示例:** 根据学生的考试成绩进行等级划分。

    ---

    **Java选择结构笔记**

    1. **if...else if...else结构**:
       - 基于不同的布尔条件执行不同的语句块。
       - 执行流程如下:
         - 如果`判断条件1`为true,则执行`执行语句1`;
         - 否则,如果`判断条件2`为true,则执行`执行语句2`;
         - 以此类推,如果所有条件都为false,则执行`else`块中的`执行语句n+1`。

       *示例*:
     

    1.  int grade = 75;
    2.    if(grade > 80){
    3.        System.out.println("该成绩的等级为优");
    4.    } else if(grade > 70){
    5.        System.out.println("该成绩的等级为良");
    6.    } else if(grade > 60){
    7.        System.out.println("该成绩的等级为中");
    8.    } else {
    9.        System.out.println("该成绩的等级为差");
    10.    }


       *结果*: 该成绩的等级为良

    2. **三元运算符**:
       - 用于在一个表达式中执行简单的条件检查。
       - 格式: `条件 ? 值1 : 值2`
       - 如果条件为true,则结果为值1,否则为值2。
       
       *示例*:

    1.  int x, y;
    2.    int max = x > y ? x : y;

    3. **switch语句**:
       - 根据一个表达式的值在多个选项中进行选择。
       - 可用于代替多个if...else if语句。
       - 主要用于检查离散的值,例如用数字代表星期天。
       

     

     

     2.4.2 三元运算符

    **2.4.2 三元运算符**

    Java提供了一种简洁的方法来进行条件判断,并根据判断的结果来决定值,这就是所谓的三元运算符。

    **基本语法**:

    判断条件 ? 表达式1 : 表达式2

    - 当`判断条件`成立(即为`true`)时,整个三元表达式的值是`表达式1`的值。
    - 当`判断条件`不成立(即为`false`)时,整个三元表达式的值是`表达式2`的值。

    **与if...else的对比**:

    考虑一个例子,我们要找出两个数`x`和`y`之间的较大者。

    使用if...else语句:

    1. int x = 0;
    2. int y = 1;
    3. int max;
    4. if(x > y) {
    5.     max = x;
    6. } else {
    7.     max = y;
    8. }
    9. System.out.println(max);

    使用三元运算符:

    1. int x = 0;
    2. int y = 1;
    3. int max = x > y ? x : y;
    4. System.out.println(max);

    可以看到,使用三元运算符的代码更加简洁。

    **注意事项**:
    1. 三元运算符由两个符号“?”和“:”组成,这两个符号必须配合使用,不能单独使用。
    2. 三元运算符的优先级低于关系运算符和算术运算符,但高于赋值运算符。
    3. 三元运算符可以进行嵌套使用。例如,`a > b ? a : c > d ? c : d`应该被理解为`a > b ? a : (c > d ? c : d)`。这是一个嵌套的三元运算符,其中的表达式2又是一个三元表达式。

    **结论**:

    三元运算符为Java程序员提供了一种简洁而强大的工具,可以用于简化基于条件的值分配。但是,过度使用或嵌套三元运算符可能会使代码难以阅读和维护,所以在使用时需要权衡。

    2.4.3 switch 条件语句 

    **2.4.3 switch条件语句**

    `switch`语句是Java中的选择结构,与`if-else`语句相似,但其工作方式与`if-else`有所不同。

    **基本概念**:

    与`if`条件语句不同的是,`switch`语句基于一个表达式或变量的值来执行代码块,而不是基于条件表达式的结果。

    **基本语法**:

    1. switch(表达式) {
    2.     case1:
    3.         // 代码
    4.         break;
    5.     case2:
    6.         // 代码
    7.         break;
    8.     // ... 更多的case...
    9.     default:
    10.         // 代码
    11. }

    - 表达式的值与case语句中的值进行比较。
    - 如果找到匹配的值,那么与此值相关的代码块会被执行。
    - `break`语句用于中断`switch`语句。
    - 如果没有匹配到任何`case`,那么`default`部分的代码块会被执行。

    **示例**:

    如果根据一个数字(1-7)输出对应的星期名称,使用`switch`语句会更有条理:

    1. int week = 5;
    2. switch(week) {
    3.     case 1:
    4.         System.out.println("星期一");
    5.         break;
    6.     case 2:
    7.         System.out.println("星期二");
    8.         break;
    9.     case 3:
    10.         System.out.println("星期三");
    11.         break;
    12.     case 4:
    13.         System.out.println("星期四");
    14.         break;
    15.     case 5:
    16.         System.out.println("星期五");
    17.         break;
    18.     case 6:
    19.         System.out.println("星期六");
    20.         break;
    21.     case 7:
    22.         System.out.println("星期天");
    23.         break;
    24.     default:
    25.         System.out.println("输入的数字不正确...");
    26. }

    在上述代码中,当`week`等于5时,输出为“星期五”。

    **多个case共用一个代码块**:

    有时,我们可能希望多个`case`标签可以共享同一个代码块。例如,判断是否为工作日:

    1. int week = 2;
    2. switch(week) {
    3.     case 1:
    4.     case 2:
    5.     case 3:
    6.     case 4:
    7.     case 5:
    8.         System.out.println("今天是工作日");
    9.         break;
    10.     case 6:
    11.     case 7:
    12.         System.out.println("今天是休息日");
    13.         break;
    14. }

    此代码将会为`week`值1到5输出“今天是工作日”,而对于值6和7,则输出“今天是休息日”。

    **总结**:

    `switch`语句为处理基于多个固定值的情况提供了一种简洁的方式。尽管`if-else`语句在处理更复杂的条件时可能更为灵活,但在某些情况下,`switch`语句可能更具可读性和效率。

     

     

     

     

     

     

     总结

    **选择结构语句总结:**

    **1. 重点:**
    - `if`、`if-else`和`if-else if-else`是根据不同的条件执行不同的代码块。
    - `switch`基于一个表达式的值执行不同的代码块。

    **2. 难点:**
    - 确保`if-else if-else`结构中的逻辑是互斥的,确保不会有重叠。
    - `switch`语句只能处理等值条件,而不能处理范围或多重条件。

    **3. 易错点:**
    - 忘记在`switch`语句中的每个`case`后面使用`break`,从而导致“fall through”(即执行完一个`case`后,继续执行下一个`case`,直到遇到`break`或`switch`结束)。
    - 在`if`语句中,使用`=`(赋值)而不是`==`(相等性检查)。
    - 不适当地嵌套`if`语句,导致逻辑混淆。
    - 在`switch`语句中,如果多个`case`共享同一个代码块,忘记`break`可能导致意外的行为。

    **4. 使用技巧:**
    - **何时使用`if`**:当你需要基于一个或多个条件执行代码时。适合用于范围判断、多重条件判断或者复杂的逻辑关系。
      - 例:`if(age > 18 && isMember)`
    - **何时使用`switch`**:当你需要基于一个变量或表达式的多个固定值执行代码时。适合用于简单的等值判断,且这些值之间没有关联或范围。
      - 例:根据一周的天数(1-7)来决定输出星期几。

    **建议:**
    - 对于两种或两种以上的选择,可以考虑使用`if-else`或`switch`,但应根据具体情况选择更为清晰的结构。
    - 当有许多可能的值但只有几种实际的操作时,使用`switch`可能更为简洁。例如,多个状态可能导致同一操作。
    - 当处理范围、逻辑关系或多重条件时,使用`if-else`结构。
    - 总是确保代码的可读性,有时添加注释或重新组织逻辑可以避免未来的混淆。

  • 相关阅读:
    Java初始化大量数据到Neo4j中(二)
    笔试强训第25天--编程题--(树根+星际密码)
    java计算机毕业设计花卉网站源码+mysql数据库+系统+lw文档+部署
    Redis原理再学习04:数据结构-哈希表hash表(dict字典)
    移动端技术解决方案
    关于MySQL数据库中的索引
    PVA接枝键合聚苯乙烯二乙烯基苯交联微球/聚苯乙烯微球表面接枝聚合丙烯酸酯的改性方法
    如何使用 NFTScan NFT API 在 zkSync 网络上开发 Web3 应用
    基于SSM的毕业设计管理系统【数据库设计、源码、开题报告】
    Servlet学生管理系统(萌新练手版)
  • 原文地址:https://blog.csdn.net/tang7mj/article/details/133700632