2.4 选择结构语句

本文详细介绍了Java编程中的条件语句(如if、if...else、if...elseif...else和switch),强调了它们在根据条件执行不同代码块中的应用,包括三元运算符的使用和switch语句的特点。

 思维导图:

 2.4.1 If条件语句

### 2.4 选择结构语句

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

**2.4.1 if条件语句**

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

  if (判断条件) {
      执行语句;
  }

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

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

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

public class Example07 {
    public static void main(String[] args) {
        int x = 5;
        if (x < 10) {
            x++;
        }
        System.out.println("x=" + x);
    }
}

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

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

- **语法:**
 

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

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

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

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

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

- **语法:**
 

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

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

---

**Java选择结构笔记**

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

   *示例*:
 

  int grade = 75;
   if(grade > 80){
       System.out.println("该成绩的等级为优");
   } else if(grade > 70){
       System.out.println("该成绩的等级为良");
   } else if(grade > 60){
       System.out.println("该成绩的等级为中");
   } else {
       System.out.println("该成绩的等级为差");
   }


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

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

  int x, y;
   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语句:

int x = 0;
int y = 1;
int max;
if(x > y) {
    max = x;
} else {
    max = y;
}
System.out.println(max);

使用三元运算符:

int x = 0;
int y = 1;
int max = x > y ? x : y;
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`语句基于一个表达式或变量的值来执行代码块,而不是基于条件表达式的结果。

**基本语法**:

switch(表达式) {
    case 值1:
        // 代码
        break;
    case 值2:
        // 代码
        break;
    // ... 更多的case...
    default:
        // 代码
}

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

**示例**:

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

int week = 5;
switch(week) {
    case 1:
        System.out.println("星期一");
        break;
    case 2:
        System.out.println("星期二");
        break;
    case 3:
        System.out.println("星期三");
        break;
    case 4:
        System.out.println("星期四");
        break;
    case 5:
        System.out.println("星期五");
        break;
    case 6:
        System.out.println("星期六");
        break;
    case 7:
        System.out.println("星期天");
        break;
    default:
        System.out.println("输入的数字不正确...");
}

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

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

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

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

此代码将会为`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`结构。
- 总是确保代码的可读性,有时添加注释或重新组织逻辑可以避免未来的混淆。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值