Java流程控制语句——条件控制语句详解(附有流程图)#Java条件控制语句有哪些?#if-else、switch

在 Java 编程中,条件控制语句 用于控制程序的执行路径,决定根据某些条件来选择执行某段代码或跳过某段代码。它们是 Java 编程的重要组成部分,帮助开发者根据不同的输入、状态或数据流来编写更加灵活和动态的代码。在本文中,我们将详细讲解 Java 中的几种条件控制语句:if-else、else-if 和 switch,并通过示例帮助理解这些概念。

1. if-else语句

if-else 语句用于根据条件判断来选择不同的执行路径。当条件为真时,执行 if 代码块或者else if;当条件为假时,执行 else 代码块。

☑️if

java 复制代码
格式:
if (关系表达式) {
    语句体;    
}
🔶执行流程:

①首先计算关系表达式的值

②如果关系表达式的值为true就执行语句体

③如果关系表达式的值为false就不执行语句体

④继续执行后面的语句内容

🏷️例子:
java 复制代码
int age = 18;
if (age >= 18) {
    System.out.println("Adult");
}
if (age < 18) {
    System.out.println("Not an adult");
}
//输出结果为Adult
❗注意:
  • 如果我们要对一个布尔类型的变量进行判断,不要写==,直接把变量写在小括号中即可。

    java 复制代码
    boolean flag = true;
    if (flag) {
        System.out.println("判断为真");
    }
  • 如果大括号中的语句体只有一条,那么大括号可以省略不写。如果大括号省略了,那么if或者else只能控制距离他最近的那一条语句。但是建议还是加上大括号,代码可读性更强

    java 复制代码
    int a = 1;
    //如果大括号中的语句体只有一条,那么大括号可以省略不写
    if (a == 1) System.out.println("1");
    //但是还是建议加上大括号
    if (a == 1) {
        System.out.println("1");
    }

☑️if-else

java 复制代码
格式:
if (关系表达式) {
    语句体1;   
} else {
    语句体2;   
}
🔶执行流程:

①首先计算关系表达式的值

②如果关系表达式的值为true就执行语句体1

③如果关系表达式的值为false就执行语句体2

④继续执行后面的语句内容

🏷️例子:
java 复制代码
int age = 18;
if (age >= 18) {
    System.out.println("Adult");
} else {
    System.out.println("Not an adult");
}
//输出结果为Adult

☑️else if

java 复制代码
格式:
if (关系表达式1) {
    语句体1;   
} else if (关系表达式2) {
    语句体2;   
} else if (关系表达式3) {
    语句体3;   
} 
...
else {
    语句体n+1;
}
🔶执行流程:

①首先计算关系表达式1的值

②如果值为true就执行语句体1;如果值为false就计算关系表达式2的值

③如果值为true就执行语句体2;如果值为false就计算关系表达式3的值

④...

⑤如果没有任何关系表达式为true,就执行语句体n+1。

🏷️例子:
java 复制代码
int score = 75;
if (score >= 90) {
    System.out.println("A");
} else if (score >= 80) {
    System.out.println("B");
} else if (score >= 70) {
    System.out.println("C");
} else {
    System.out.println("F");
}
❗注意:

末尾的else如果不需要可以省略不写。

☑️使用场景

  • 当需要基于一个或多个逻辑条件来执行不同的代码路径时使用。

  • 通常用于处理简单的逻辑分支,如分数等级评定。

2. switch-case语句

🔶执行流程:

  • 首先计算出表达式的值

  • 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。

  • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

☑️传统格式:

java 复制代码
switch (表达式) {
    case 值1:
        // 如果表达式的值等于值1,执行这里的代码
        break;
    case 值2:
        // 如果表达式的值等于值2,执行这里的代码
        break;
    default:
        // 如果没有匹配的case,执行这里的代码
}
🔶流程图:
java 复制代码
开始
↓
获取表达式值
↓
判断是否等于值1
| 是 -> 执行代码块1
| 否 -> 判断是否等于值2
|    是 -> 执行代码块2
|    否 -> ... -> 执行默认代码块
↓
结束
🏷️示例:
java 复制代码
int day = 2;
switch (day) {
    case 1:
        System.out.println("Monday");
        break;
    case 2:
        System.out.println("Tuesday");
        break;
    default:
        System.out.println("Invalid day");
}

☑️新型格式(Java 14及以上版本):

java 复制代码
var result = switch (表达式) {
    case 值1 -> "值1的处理结果";
    case 值2 -> "值2的处理结果";
    // 更多case...
    default -> "默认处理结果";
};
🔶流程图:
java 复制代码
开始
↓
获取表达式值
↓
匹配case值
| 匹配成功 -> 执行对应代码块
| 匹配失败 -> 执行默认代码块
↓
结束
🏷️示例:
java 复制代码
String dayOfWeek = "Wednesday";
var dayResult = switch (dayOfWeek) {
    case "Monday" -> "今天是周一";
    case "Tuesday" -> "今天是周二";
    case "Wednesday" -> "今天是周三";
    default -> "不是这三天中的一天";
};
System.out.println(dayResult);

☑️使用场景

  • 当需要根据变量的不同取值来选择不同的执行路径时使用。

  • 特别适用于处理byte、short、int、char、枚举、String类型或预定义的几个可能值。

  • 有限值需要任选其一的情况用switch可以让语句更简洁可读。

  • case后面的值只能是字面量不能是变量。

🔶 switchelse if使用场景的区别
  • 当我们需要对一个范围进行判断的时候,用else if
  • 当我们把有限个数据列举出来,选择其中一个执行的时候,用switch语句

简单记忆:记住switch语句使用场景,其他都考虑else if

❗注意:

default可以放在任意位置,也可以省略

但是都不建议:

  • default放在其他位置会导致代码混乱,可读性差;
  • 省略会导致没有匹配上结果就会结束

不写break会引发case穿透现象

java 复制代码
switch (week){
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        System.out.println("工作日");
        break;
    case 6:
    case 7:
        System.out.println("休息日");
        break;
    default:
        System.out.println("没有这个星期");
        break;
}

3. 表格总结

语句 用法 适用场景
if-else 用于判断一个布尔表达式并根据条件执行代码块 用于范围判断、逻辑复杂的多条件分支
else-if 用于多层判断,从上到下依次检查条件是否成立 需要处理多条件且逻辑稍微复杂的场景
switch 基于一个表达式的值,执行匹配的 case 代码块 用于处理有限个具体值的比较,如整型、字符型

4. 结论

在 Java 中,条件控制语句是编写动态程序的基础,能够帮助开发者根据输入或状态做出决策。if-elseelse-if 语句提供了灵活的多条件判断,而 switch 语句则在处理有限个具体值的情况下更加简洁。通过合理选择和使用这些条件控制语句,可以使代码更加高效、清晰,并且容易维护。

相关推荐
明月看潮生2 分钟前
青少年编程与数学 02-003 Go语言网络编程 15课题、Go语言URL编程
开发语言·网络·青少年编程·golang·编程与数学
雷神乐乐6 分钟前
File.separator与File.separatorChar的区别
java·路径分隔符
小刘|11 分钟前
《Java 实现希尔排序:原理剖析与代码详解》
java·算法·排序算法
南宫理的日知录13 分钟前
99、Python并发编程:多线程的问题、临界资源以及同步机制
开发语言·python·学习·编程学习
逊嘘30 分钟前
【Java语言】抽象类与接口
java·开发语言·jvm
Half-up32 分钟前
C语言心型代码解析
c语言·开发语言
morris13137 分钟前
【SpringBoot】Xss的常见攻击方式与防御手段
java·spring boot·xss·csp
Source.Liu1 小时前
【用Rust写CAD】第二章 第四节 函数
开发语言·rust
monkey_meng1 小时前
【Rust中的迭代器】
开发语言·后端·rust
余衫马1 小时前
Rust-Trait 特征编程
开发语言·后端·rust