Skip to content

Java | 流程控制

更新: 2/4/2025 字数: 0 字 时长: 0 分钟

在 Java 程序中,JVM 默认总是顺序执行以分号 ; 结束的语句。

但是,在实际的代码中,程序经常需要做条件判断、循环,因此,需要有多种流程控制语句,来实现程序的跳转和循环等功能。

顺序控制

程序从上到下逐行地执行,中间没有任何判断和跳转。

Java 中定义成员变量时采用合法的前向引用。

java
int num1 = 12;
int num2 = num1 + 2;
java
int num1 = num2 + 2; // 错误
int num2 = 12;

分支控制

让程序有选择的执行。

条件判断

在 Java 程序中,如果要根据条件来决定是否执行某一段代码,就需要 if 语句。

根据 if 的计算结果(true 还是 false),JVM 决定是否执行 if 语句块(即花括号 {} 包含的所有语句)。

java
if (条件) {
    // 条件满足时执行
}
java
int age = 20;
if (age >= 18) {
    System.out.println("成年人");
}
java
if (条件) {
    // 条件满足时执行
} else {
    // 条件不满足时执行
}
java
int score = 85;
if (score >= 60) {
    System.out.println("及格");
} else {
    System.out.println("不及格");
}
java
if (条件一) {
    // 条件一满足时执行
} else if (条件二) {
    // 条件二满足时执行
} else {
    // 所有条件都不满足时执行
}
java
int temperature = 25;
if (temperature > 30) {
    System.out.println("炎热");
} else if (temperature > 20) {
    System.out.println("舒适");
} else {
    System.out.println("寒冷");
}
java
if (条件一) {
    if (条件二) {
        // 条件一和条件二都满足时执行
    } else {
        // 条件一满足,条件二不满足时执行
    }
} else {
    // 条件一不满足时执行
    System.out.println("条件一不满足");
}
java
int age = 20;
boolean isStudent = true;
if (age > 18) {
    if (isStudent) {
        System.out.println("成年学生");
    } else {
        System.out.println("成年工作者");
    }
} else {
    System.out.println("未成年人");
}

多重选择

除了 if 语句外,还有一种条件判断 。

switch 是根据某个表达式的结果,分别去执行不同的分支。

注意

  • 表达式数据类型应和 case 后的常量类型一致,或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是 int
  • switch 表达式的返回值必须是 byte, short, int, char, enum, String
  • case 子句中的值必须是常量,而不能是变量。
  • default 子句是可选的,当没有匹配的 case 时,执行 default
  • break 语句用来在执行完一个 case 分支后使程序跳出 switch 语句块。
  • 如果没有写 break,程序会顺序执行到 switch 结尾,除非遇到 break
java
switch (表达式) {
    case 常量1:
        // 语句块1
        break;
    case 常量2:
        // 语句块2
        // 没有 break 则穿透,继续执行下一个 case 语句块
    case 常量3:
        // 语句块3
        break;

    // ...

    case 常量n:
        // 语句块n
        break;
    default:
        // 当没有匹配到任何 case 时,执行 default
        break;
}
java
int day = 3;
switch (day) {
    case 1:
        System.out.println("星期一");
        break;
    case 2:
        System.out.println("星期二");
        break;
    case 3:
        System.out.println("星期三");
        break;
    default:
        System.out.println("其他");
        break;
}
java
switch (表达式) {
    // 使用箭头代替 break
    case 常量1 -> // 语句块1
    // 允许多个常量放在一个 case 后面
    case 常量2, 常量3 -> // 语句块2、3
    // 多个语句可以使用大括号来包裹代码块
    case 常量4 -> {
        // 语句块4
        // ...
    }
    default -> // default 语句块
}
java
int month = 2;
switch (month) {
    case 1 -> System.out.println("一月");
    case 2, 3 -> System.out.println("二月或三月");
    case 4 -> {
        System.out.println("四月");
        System.out.println("春季");
    }
    default -> System.out.println("其他月份");
}

循环控制

for

for 循环是一种常用的循环结构,适用于在循环开始前已知循环次数的情况。

java
for (循环变量初始化; 循环条件; 循环变量迭代) {
    // 循环体
    循环操作;
}
java
for (int i = 0; i < 10; i++) {
    System.out.println("Hello, world! " + i);
}

while

while 循环会在满足循环条件的情况下,重复执行循环体。

java
while (循环条件) {
    // 循环体
    循环操作;
    循环变量迭代;
}
java
int i = 0;
while (i < 10) {
    System.out.println("Hello, world! " + i);
    i++;
}

do while

do while 循环与 while 循环类似,但它会先执行一次循环体,然后再判断循环条件。因此,do while 循环至少会执行一次。

java
do {
    // 循环体
    循环操作;
    循环变量迭代;
} while (循环条件);
java
int i = 0;
do {
    System.out.println("Hello, world! " + i);
    i++;
} while (i < 10);

控制流语句

break

break 语句用于立即终止循环或 switch 语句的执行。

java
for (int i = 0; i < 10; i++) {
    if (i == 5) {
        break; // 当 i 等于 5 时,跳出循环
    }
    System.out.println("i = " + i);
}
text
i = 0
i = 1
i = 2
i = 3
i = 4
java
outerLoop:
for (int i = 0; i < 3; i++) {
    innerLoop:
    for (int j = 0; j < 3; j++) {
        if (i == 1 && j == 1) {
            break outerLoop; // 跳出外层循环
        }
        System.out.println("i = " + i + ", j = " + j);
    }
}
text
i = 0, j = 0
i = 0, j = 1
i = 0, j = 2
i = 1, j = 0

continue

continue 语句用于跳过当前循环中的剩余语句,并开始下一次循环。

java
for (int i = 0; i < 10; i++) {
    if (i == 5) {
        continue; // 当 i 等于 5 时,跳过本次循环
    }
    System.out.println("i = " + i);
}
text
i = 0
i = 1
i = 2
i = 3
i = 4
i = 6
i = 7
i = 8
i = 9
java
outerLoop:
for (int i = 0; i < 3; i++) {
    innerLoop:
    for (int j = 0; j < 3; j++) {
        if (i == 1 && j == 1) {
            continue outerLoop; // 继续外层循环的下一次迭代
        }
        System.out.println("i = " + i + ", j = " + j);
    }
}
text
i = 0, j = 0
i = 0, j = 1
i = 0, j = 2
i = 1, j = 0
i = 2, j = 0
i = 2, j = 1
i = 2, j = 2

return

return 语句用于从方法中退出,并返回一个值(如果方法有返回值)。

java
public int add(int a, int b) {
    return a + b; // 返回 a 和 b 的和
}

贡献者

The avatar of contributor named as wkwbk wkwbk

页面历史