文章目录
一、简介
在 Java 中,流程控制语句可以使 Java 程序能够根据不同的情况做出操作、重复执行任务、提前结束执行或跳过某些操作,从而实现更加复杂和灵活的程序逻辑。
二、条件语句
在 Java 中,条件语句主要有 if 语句、if - else 语句、 if - else if - else 语句和 switch 语句,它们用于根据不同的条件执行不同的代码块。
2.1 if
语法结构
if (条件表达式) {
代码块
}
⚠️当条件表达式的值为 true 时,执行语句块中的代码;如果为 false,则不执行语句块中的代码,直接跳过。
代码示例
public class Main {
public static void main(String[] args) {
int num = 10;
if (num > 5) {
System.out.println("num 大于 5");
}
}
}
运行结果:
num 大于 5
2.2 if - else
语法结构
if (条件表达式) {
语句块1
} else {
语句块2
}
⚠️当条件表达式的值为 true 时,执行语句块1中的代码;如果为 false,则执行语句块2中的代码。
代码示例
public class Main {
public static void main(String[] args) {
int num = 10;
if (num < 5) {
System.out.println("num 大于 5");
}else {
System.out.println("num 不大于 5");
}
}
}
运行结果:
num 不大于 5
2.3 if - else if - else
语法结构
if (条件表达式1) {
语句块1
} else if (条件表达式2) {
语句块2
} else {
语句块3
}
⚠️可以进行多个条件的判断。依次判断条件表达式,当某个条件表达式为 true,则执行对应的语句块;如果所有条件表达式都为 false,则执行 else 后的语句块。
代码示例
public class Main {
public static void main(String[] args) {
int num = 10;
if (num > 15) {
System.out.println("num 大于 15");
} else if (num > 5) {
System.out.println("num 大于 5 但不大于 15");
} else {
System.out.println("num 不大于 5");
}
}
}
运行结果:
num 大于 5 但不大于 15
2.4 switch
switch 语句通过将表达式的值与 case 后面的常量值进行匹配来确定执行的代码块,表达式通常是整数类型、枚举类型或者 String 类型(从 Java 7 开始支持)。
语法结构
switch(表达式) {
case 值1:
// 当表达式的值等于值1时执行的代码
break;
case 值2:
// 当表达式的值等于值2时执行的代码
break;
// 可以有多个 case 语句
default:
// 当表达式的值与所有 case 中的值都不匹配时执行的代码
}
⚠️匹配过程遵循以下规则:
- 首先计算 switch 后面表达式的值;
- 然后将该值与每个 case 后面的常量值进行比较。如果找到匹配的 case ,则从该 case 处开始执行代码,直到遇到 break 语句或者 switch 语句结束;
- 如果没有找到匹配的 case ,则执行 default 分支(如果存在)。
public class Main {
public static void main(String[] args) {
int num = 2;
switch (num) {
case 1:
System.out.println("这是 1");
break;
case 2:
System.out.println("这是 2");
break;
case 3:
System.out.println("这是 3");
break;
default:
System.out.println("没有匹配的");
}
}
}
运行结果:
这是 2
case 穿透:
因为 case 语句中缺少 break 语句所导致的错误结果。
public class Main {
public static void main(String[] args) {
int num = 2;
switch (num) {
case 1:
System.out.println("这是 1");
case 2:
System.out.println("这是 2");
case 3:
System.out.println("这是 3");
break;
default:
System.out.println("没有匹配的");
}
}
}
运行结果:
这是 2
这是 3
如果当前匹配成功的 case 语句块没有 break 语句,则从当前 case 开始,后续所有 case 的值都会输出,直到后续的 case 语句块中有 break 关键字才会中断 switch。
新特性
在 JDK12 的版本,可以简写 switch 语句,如下所示:
public class Main {
public static void main(String[] args) {
int num = 2;
switch (num) {
case 1 -> System.out.println("这是 1");
case 2 -> System.out.println("这是 2");
case 3 -> System.out.println("这是 3");
default -> System.out.println("没有匹配的");
}
}
}
运行结果:
这是 2
这种书写方式是 JDK12 出现的,所以比之低的版本的JDK是不可以使用的,默认自带了 break 语句,不需要在代码里书写,并且如果代码块只有一条语句,大括号也可以不写。
三、循环语句
在 Java 中,循环语句主要有 for 循环、while 循环和 do - while 循环,用于重置执行同样的操作或循环遍历数据。
3.1 for
for 循环相较于其他两种循环结构,for 循环的结构清晰,常用于已知循环次数的情况,并且可以处理下标。
语法结构
for (初始化表达式; 条件表达式; 更新表达式) {
循环体
}
⚠️ 匹配过程遵循以下规则:
- 初始化表达式在循环开始时执行一次,通常用于初始化循环变量;
- 条件表达式在每次循环开始前进行判断,如果为 true,则执行循环体;如果为 false,则结束循环;
- 更新表达式在每次循环体执行完后执行,通常用于更新循环变量,之后重复执行第2步的操作。
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
}
}
运行结果:
0
1
2
3
4
3.2 while
while 循环相较于 for 循环,用于不知道循环次数的情况,循环体内必须有改变条件表达式值的操作,否则可能会导致死循环。
语法结构
while (条件表达式) {
循环体
}
⚠️ 匹配过程遵循以下规则:
- 先判断条件表达式,如果为 true,则执行循环体;如果为 false,则直接结束循环;
- 然后重复执行第1步操作。
public class Main {
public static void main(String[] args) {
int i = 0;
while (i < 5) {
System.out.println(i);
i++;
}
}
}
运行结果:
0
1
2
3
4
3.3 do - while
do - while 循环相较于 while 循环,do - while 循环无论条件表达式一开始是否为 true,循环体至少会执行一次,用于不知道循环次数、不管是否为 true 都执行的情况。
语法结构
do {
循环体
} while (条件表达式);
⚠️ 匹配过程遵循以下规则:
- 先执行一次循环体,然后再判断条件表达式。如果为 true,则继续执行循环体;如果为 false,则结束循环;
- 然后重复执行第1步操作。
public class Main {
public static void main(String[] args) {
int i = 0;
do {
System.out.println(i);
i++;
} while(i < 5);
}
}
运行结果:
0
1
2
3
4
四、跳转语句
在 Java 中,跳转语句主要有 break 关键字、continue 关键字和 return 关键字,用于根据特定条件灵活地改变程序的执行次序。
4.1 break
break 用于跳出循环或 switch 语句。
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
// 当i的值为5时,终止循环
if (i == 5) {
break;
}
System.out.println(i);
}
}
}
运行结果:
0
1
2
3
4
4.2 continue
continue 用于跳过当前循环中的剩余语句,直接进入下一次循环。
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
// 当i的值为5时,跳过本次循环
if (i == 5) {
continue;
}
System.out.println(i);
}
}
}
运行结果:
0
1
2
3
4
6
7
8
9
4.3 return
return 用于从方法中返回值,并结束方法的执行。它和 break 关键字不是一个量级的,return 会直接终止当前所在的方法,而 break 只是终止循环或 switch。
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
// 当i的值为5时,终止当前方法
if (i == 5) {
return;
}
System.out.println(i);
}
System.out.println("这里的代码不会执行");
}
}
运行结果:
0
1
2
3
4