编程

Java 基础 - Java 中的控制结构

29 2024-10-23 12:14:00

1. 概述

从最基本的意义上讲,程序是一系列指令。控制结构是编程块,可以改变我们通过这些指令的路径。

本文中,我们将探索 Java 中的控制结构。

它有三种控制结构:

  • 条件分支,用于在两条或多条路径之间进行选择。Java 中有三种类型:if/else/else if、三元运算符和 switch。 
  • 用于迭代多个值/对象并重复运行特定代码块的循环。Java 中的基本循环类型有 forwhiledo while
  • 分支语句,用于改变循环中的控制流。Java 中有两种类型:breakcontinue

2. If/Else/Else If

if/else 语句是最基础的控制结构,但也可以被认为是编程决策的基础。

虽然 if 可以单独使用,但最常见的使用场景是使用 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. 三元表达式

我们可以使用三元运算符作为类似 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");
}

我们可以用三元函数重构它,如下所示:

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

虽然三元表达式可以使我们的代码更具可读性,但它并不总是 if/else 的好替代品。

4. Switch

如果我们有多个情况(case)可供选择,我们可以使用 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. 循环

当我们需要连续多次重复相同的代码时,可以使用循环。

让我们来看一个类似 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 程序中的流控制。