Java | 流程控制
更新: 6/28/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);
}txt
i = 0
i = 1
i = 2
i = 3
i = 4java
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);
}
}txt
i = 0, j = 0
i = 0, j = 1
i = 0, j = 2
i = 1, j = 0continue
continue语句用于跳过当前循环中的剩余语句,并开始下一次循环。
java
for (int i = 0; i < 10; i++) {
if (i == 5) {
continue; // 当 i 等于 5 时,跳过本次循环
}
System.out.println("i = " + i);
}txt
i = 0
i = 1
i = 2
i = 3
i = 4
i = 6
i = 7
i = 8
i = 9java
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);
}
}txt
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 = 2return
return语句用于从方法中退出,并返回一个值(如果方法有返回值)。
java
public int add(int a, int b) {
return a + b; // 返回 a 和 b 的和
}