1. 概述

说白了,程序就是一系列指令的集合。控制结构(Control Structures)就是用来改变这些指令执行路径的编程构造块。

在本篇文章中,我们将深入探讨 Java 中常用的控制结构。

控制结构主要分为三类:

  • 条件分支(Conditional Branches):用于在多个路径中做选择。Java 中主要有 if/else/else if、三元运算符 和 switch
  • 循环(Loops):用于遍历多个值或对象,并重复执行某段代码。Java 中常见的有 forwhiledo-while
  • 跳转语句(Branching Statements):用于改变循环中的控制流程。Java 中主要有 breakcontinue

2. if/else/else if

if/else 是最基础的控制结构之一,同时也是编程中做判断的基石。

虽然 if 可以单独使用,但最常见的场景是搭配 else 来进行二选一的逻辑处理:

if (count > 2) {
    System.out.println("Count is higher than 2");
} else {
    System.out.println("Count is lower or equal than 2");
}

理论上,我们可以无限嵌套或链式使用 if/else,但这样会严重降低代码可读性,不推荐这么做

在本文后续内容中,我们会介绍一些替代方案。

3. 三元运算符(Ternary Operator)

三元运算符是一种简洁的表达方式,功能类似于 if/else

还是上面那个例子:

if (count > 2) {
    System.out.println("Count is higher than 2");
} else {
    System.out.println("Count is lower or equal than 2");
}

可以改写为:

System.out.println(count > 2 ? "Count is higher than 2" : "Count is lower or equal than 2");

⚠️ 三元运算符可以让代码更简洁,但并不是所有 if/else 都适合用它替代。滥用会让代码变得难以维护

4. switch

当我们有多个条件分支可供选择时,可以使用 switch 语句。

来看个简单例子:

int count = 3;
switch (count) {
case 0:
    System.out.println("Count is equal to 0");
    break;
case 1:
    System.out.println("Count is equal to 1");
    break;
default:
    System.out.println("Count is either negative, or higher than 1");
    break;
}

⚠️ 当有三个或更多 if/else 分支时,代码会变得难读,这时使用 switch 是一种不错的替代方案。

但是要注意,switch 对输入类型和作用域有限制,使用前务必了解清楚。

5. 循环(Loops)

当我们需要重复执行某段代码时,就可以使用循环。

下面是一个 forwhile 循环的对比示例:

for (int i = 1; i <= 50; i++) {
    methodToRepeat();
}

int whileCounter = 1;
while (whileCounter <= 50) {
    methodToRepeat();
    whileCounter++;
}

✅ 上面两个代码块都会调用 methodToRepeat() 方法 50 次。

6. break

当我们需要提前跳出循环时,就要用到 break

来看个例子:

List<String> names = getNameList();
String name = "John Doe";
int index = 0;
for ( ; index < names.length; index++) {
    if (names[index].equals(name)) {
        break;
    }
}

这里我们是在一个列表中查找某个名字,一旦找到就立即跳出循环。

break 的作用就是中断当前循环,提前退出,避免无意义的遍历。

7. continue

简单来说,continue 的作用就是跳过本次循环的剩余部分,直接进入下一轮循环

示例代码如下:

List<String> names = getNameList();
String name = "John Doe";
String list = "";
for (int i = 0; i < names.length; i++) { 
    if (names[i].equals(name)) {
        continue;
    }
    list += names[i];
}

在这个例子中,我们跳过了与目标名字相同的元素,避免将其加入结果字符串中。

⚠️ breakcontinue 在循环中确实很有用,但在实际开发中,很多时候可以用 return 或其他逻辑替代它们,让代码更清晰

8. 总结

在这篇文章中,我们学习了 Java 中的控制结构,包括条件判断、循环以及跳转语句,并了解了它们在流程控制中的具体应用。

掌握这些结构,能让我们写出更清晰、更高效的代码。✅



原始标题:Control Structures in Java | Baeldung