Java 流程控制语句超详细整理,从入门到精通
流程控制语句用于控制代码的执行顺序,是 Java 编程的核心基础。本文依次讲解顺序结构、if 分支、switch 分支、Debug 调试工具、三大循环、跳转语句,搭配完整语法、实战案例、易错点分析,零基础可直接学习、复习与面试使用。
一、流程控制语句分类
Java 程序执行流程分为三大类:
- 顺序结构:程序默认执行方式,代码从上到下依次逐行执行;
- 分支结构:根据条件判断,选择性执行对应代码,包含
if、switch; - 循环结构:满足条件时重复执行一段代码,包含
for、while、do…while。
1.1 顺序结构
顺序结构无需额外语法,是程序默认执行逻辑。代码示例:
public class OrderDemo {
public static void main(String[] args) {
System.out.println("A");
System.out.println("B");
System.out.println("C");
}
}
执行顺序:从上至下依次输出A、B、C。
二、分支结构 if
if 语句根据布尔条件判断结果,选择执行不同代码块,分为三种常用格式。
2.1 第一种格式(单分支)
语法
if (判断条件) {
语句体;
}
执行流程
- 计算括号内的布尔条件;
- 结果为
true,执行大括号内代码; - 结果为
false,直接跳过语句体。
2.2 第二种格式(双分支 if-else)
语法
if (判断条件) {
语句体1;
} else {
语句体2;
}
执行流程
- 判断条件为
true,执行语句体 1; - 判断条件为
false,执行语句体 2。
2.3 第三种格式(多分支 if-else if-else)
语法
if (判断条件1) {
语句体1;
} else if (判断条件2) {
语句体2;
}
...
else {
语句体n+1;
}
执行流程
依次判断每一个条件,哪个条件为true就执行对应代码块;所有条件都不成立,执行最后的else代码块。
2.4 实战案例:考试成绩评级
需求:键盘录入考试分数,按照区间输出对应奖励 / 评价
- 95~100 分
- 90~94 分
- 80~89 分
- 80 分以下
import java.util.Scanner;
public class ScoreJudge {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入考试成绩:");
int score = sc.nextInt();
if (score >= 95 && score <= 100) {
System.out.println("成绩优秀,获得大奖");
} else if (score >= 90 && score <= 94) {
System.out.println("成绩良好,获得小奖品");
} else if (score >= 80 && score <= 89) {
System.out.println("成绩合格,继续努力");
} else {
System.out.println("成绩不合格,多加练习");
}
}
}
2.5 if 语句注意事项
- 若语句体只有一行代码,大括号
{}可以省略(规范开发建议保留); if(条件)后面不要加分号,否则会造成逻辑断层;- 括号内必须是布尔类型表达式(结果只能是
true/false)。
三、分支结构 switch
switch 是等值判断分支语句,适合固定值匹配场景,代码简洁、执行效率高。
3.1 语法格式
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
// 多个case依次罗列
default:
语句体n+1;
break;
}
3.2 执行流程
- 先计算
switch中表达式的结果; - 依次和每个
case后的值做等值匹配,匹配成功则执行对应代码,遇到break跳出整体 switch; - 所有
case都不匹配,执行default中的代码。
3.3 核心注意事项
- 表达式支持类型
- 基础类型:
byte、short、int、char; - JDK 5+ 新增:枚举;
- JDK 7+ 新增:
String; - 不支持:
long、float、double。
- 基础类型:
case后面只能写字面量,不能使用变量,且多个case值不能重复;- 省略
break会出现case 穿透:匹配成功后,后续所有 case 代码会依次执行,直到遇见 break 或结束; default位置可随意调整,功能等价于else。
3.4 if 与 switch 适用场景对比
if:适合区间判断、复杂多条件;switch:适合固定等值判断,代码更优雅、运行效率更高。
四、Debug 断点调试工具
Debug(断点调试)是 IDE 提供的程序排查工具,用于逐行跟踪代码执行、查看变量变化、定位 BUG。
4.1 核心概念
- 断点:在代码行上添加标记,程序运行到标记处会暂停;
- 逐行执行:一步一步运行代码,观察每一步变量、逻辑的变化。
4.2 基础使用步骤
- 添加断点:点击代码行号左侧,出现红色圆点;
- 以 Debug 模式运行程序;
- 常用操作
- 单步执行:逐行运行代码;
- 进入方法:跟踪进入自定义方法内部查看执行;
- 跳出方法:执行完当前方法,回到调用处;
- 查看变量区:实时观察变量数值变化;
- 取消断点:再次点击红色圆点,结束断点标记。
4.3 使用场景
排查逻辑错误、循环异常、方法调用异常,是开发和排错必备技能。
五、循环结构 for
循环可以让一段代码重复执行,for 循环是使用频率最高的循环,优先用于已知循环次数的场景。
5.1 语法格式
for (初始化语句; 条件判断语句; 条件控制语句) {
循环体语句;
}
- 初始化语句:定义循环变量,只在循环开始执行一次;
- 条件判断语句:布尔表达式,
true继续循环,false终止循环; - 条件控制语句:更新循环变量(常用
++/--); - 循环体:需要重复执行的代码。
5.2 执行流程
- 执行初始化语句;
- 执行条件判断,结果为
false→ 循环直接结束; - 结果为
true→ 执行循环体; - 执行条件控制语句;
- 回到第二步,重复判断执行。
5.3 基础案例
案例 1:控制台打印 10 次 “黑马程序员”
public class ForDemo1 {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
System.out.println("黑马程序员");
}
}
}
案例 2:打印 1~3 和 3~1
// 打印 1~3
for (int i = 1; i <= 3; i++) {
System.out.println(i);
}
// 打印 3~1
for (int i = 3; i >= 1; i--) {
System.out.println(i);
}
5.4 进阶案例
案例 1:求 1~100 之间偶数和
public class ForSum {
public static void main(String[] args) {
int sum = 0; // 定义累加变量
for (int i = 1; i <= 100; i++) {
// 判断偶数
if (i % 2 == 0) {
sum += i;
}
}
System.out.println("1-100偶数和:" + sum);
}
}
案例 2:找出所有水仙花数(三位数)
规则:三位数,个位 ³ + 十位 ³ + 百位 ³ = 自身
public class Narcissus {
public static void main(String[] args) {
int count = 0; // 计数器
// 遍历所有三位数 100 - 999
for (int num = 100; num <= 999; num++) {
int ge = num % 10; // 个位
int shi = num / 10 % 10; // 十位
int bai = num / 100; // 百位
if (ge*ge*ge + shi*shi*shi + bai*bai == num) {
System.out.println(num);
count++;
}
}
System.out.println("水仙花数总个数:" + count);
}
}
5.5 for 循环注意事项
- 循环括号内定义的变量,循环结束后自动释放,外部无法使用;
- 循环体
{}内定义的变量,每一轮循环结束都会释放; for()和{}之间不能加分号,否则循环体失效。
5.6 循环嵌套
循环内部再定义循环,称为循环嵌套。规则:外循环执行一次,内循环完整执行一整圈。
案例 1:打印 4 行 5 列星号矩形
for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= 5; j++) {
System.out.print("*");
}
System.out.println(); // 换行
}
案例 2:打印直角三角形
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
六、循环结构 while
while 循环优先用于未知循环次数的场景,功能和 for 完全一致。
6.1 语法格式
初始化语句;
while (条件判断语句) {
循环体语句;
条件控制语句;
}
6.2 执行流程
- 执行初始化语句;
- 判断条件,
true执行循环体,false结束循环; - 执行条件控制语句,再次回到条件判断。
6.3 实战案例:纸张折叠问题
需求:一张纸厚度 0.1 毫米,珠穆朗玛峰高 8848860 毫米,计算折叠多少次可以超过山峰高度。
public class WhileDemo {
public static void main(String[] args) {
double paper = 0.1;
final double PEAK = 8848860;
int count = 0;
while (paper < PEAK) {
paper *= 2; // 每折叠一次厚度翻倍
count++;
}
System.out.println("折叠次数:" + count);
}
}
6.4 for 与 while 选择规则
- 已知循环次数 → 优先使用
for; - 未知循环次数 → 优先使用
while; - while 循环外定义的循环变量,循环结束后仍可继续使用。
七、循环结构 do…while
7.1 语法格式
初始化语句;
do {
循环体语句;
条件控制语句;
} while (条件判断语句);
7.2 核心特点
先执行一次循环体,再做条件判断,无论条件是否成立,循环体至少执行一次。
7.3 三种循环整体对比
for、while:先判断,后执行;do…while:先执行,后判断;- 变量作用:for 循环变量仅限循环内,while/do…while 变量外部可访问;
- 使用场景:已知次数用 for,未知次数用 while,需要至少执行一次用 do…while。
八、跳转语句 break、continue
专门用于控制循环和 switch 的跳转。
8.1 break
- 作用:终止当前循环 / 跳出 switch 语句;
- 使用范围:只能在循环、switch 中使用;
- 循环嵌套中:默认终止当前内层循环。
8.2 continue
- 作用:跳过本次循环,直接进入下一次循环;
- 使用范围:仅能在循环中使用。
8.3 标号用法(控制外层循环)
循环嵌套时,可定义标号,精准跳出 / 指定外层循环:
lo: // 定义标号
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 5; j++) {
if (j == 2) {
break lo; // 直接跳出外层循环
}
}
}
九、全文总结
- 顺序结构:程序默认执行顺序,从上至下逐行运行;
- 分支语句
if:适配区间、复杂条件判断,分单分支、双分支、多分支;switch:适配固定等值判断,注意 case 穿透与支持的数据类型;
- Debug 工具:断点逐行调试,是排查 BUG、理解执行流程的必备技能;
- 循环语句
for:已知循环次数首选,变量作用域仅限循环内;while:未知循环次数首选,先判断后执行;do…while:至少执行一次循环体;- 循环嵌套:外循环一次,内循环一轮;
- 跳转语句
break:结束循环 /switch;continue:跳过当前轮循环;
流程控制是 Java 逻辑代码的核心,后续集合、IO、框架业务都会大量使用,建议多动手练习各类案例,熟练语法与使用场景。
更多推荐



所有评论(0)