流程控制语句用于控制代码的执行顺序,是 Java 编程的核心基础。本文依次讲解顺序结构、if 分支、switch 分支、Debug 调试工具、三大循环、跳转语句,搭配完整语法、实战案例、易错点分析,零基础可直接学习、复习与面试使用。

一、流程控制语句分类

Java 程序执行流程分为三大类:

  1. 顺序结构:程序默认执行方式,代码从上到下依次逐行执行;
  2. 分支结构:根据条件判断,选择性执行对应代码,包含ifswitch
  3. 循环结构:满足条件时重复执行一段代码,包含forwhiledo…while

1.1 顺序结构

顺序结构无需额外语法,是程序默认执行逻辑。代码示例:

public class OrderDemo {
    public static void main(String[] args) {
        System.out.println("A");
        System.out.println("B");
        System.out.println("C");
    }
}

执行顺序:从上至下依次输出ABC

二、分支结构 if

if 语句根据布尔条件判断结果,选择执行不同代码块,分为三种常用格式。

2.1 第一种格式(单分支)

语法
if (判断条件) {
    语句体;
}
执行流程
  1. 计算括号内的布尔条件;
  2. 结果为true,执行大括号内代码;
  3. 结果为false,直接跳过语句体。

2.2 第二种格式(双分支 if-else)

语法
if (判断条件) {
    语句体1;
} else {
    语句体2;
}
执行流程
  1. 判断条件为true,执行语句体 1;
  2. 判断条件为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 语句注意事项

  1. 若语句体只有一行代码,大括号{}可以省略(规范开发建议保留);
  2. if(条件)后面不要加分号,否则会造成逻辑断层;
  3. 括号内必须是布尔类型表达式(结果只能是true/false)。

三、分支结构 switch

switch 是等值判断分支语句,适合固定值匹配场景,代码简洁、执行效率高。

3.1 语法格式

switch(表达式) {
    case 值1:
        语句体1;
        break;
    case 值2:
        语句体2;
        break;
    // 多个case依次罗列
    default:
        语句体n+1;
        break;
}

3.2 执行流程

  1. 先计算switch中表达式的结果;
  2. 依次和每个case后的值做等值匹配,匹配成功则执行对应代码,遇到break跳出整体 switch;
  3. 所有case都不匹配,执行default中的代码。

3.3 核心注意事项

  1. 表达式支持类型
    • 基础类型:byteshortintchar
    • JDK 5+ 新增:枚举;
    • JDK 7+ 新增:String
    • 不支持longfloatdouble
  2. case后面只能写字面量,不能使用变量,且多个case值不能重复;
  3. 省略break会出现case 穿透:匹配成功后,后续所有 case 代码会依次执行,直到遇见 break 或结束;
  4. default位置可随意调整,功能等价于else

3.4 if 与 switch 适用场景对比

  • if:适合区间判断、复杂多条件
  • switch:适合固定等值判断,代码更优雅、运行效率更高。

四、Debug 断点调试工具

Debug(断点调试)是 IDE 提供的程序排查工具,用于逐行跟踪代码执行、查看变量变化、定位 BUG

4.1 核心概念

  • 断点:在代码行上添加标记,程序运行到标记处会暂停;
  • 逐行执行:一步一步运行代码,观察每一步变量、逻辑的变化。

4.2 基础使用步骤

  1. 添加断点:点击代码行号左侧,出现红色圆点;
  2. 以 Debug 模式运行程序
  3. 常用操作
    • 单步执行:逐行运行代码;
    • 进入方法:跟踪进入自定义方法内部查看执行;
    • 跳出方法:执行完当前方法,回到调用处;
    • 查看变量区:实时观察变量数值变化;
  4. 取消断点:再次点击红色圆点,结束断点标记。

4.3 使用场景

排查逻辑错误、循环异常、方法调用异常,是开发和排错必备技能。

五、循环结构 for

循环可以让一段代码重复执行,for 循环是使用频率最高的循环,优先用于已知循环次数的场景。

5.1 语法格式

for (初始化语句; 条件判断语句; 条件控制语句) {
    循环体语句;
}
  • 初始化语句:定义循环变量,只在循环开始执行一次
  • 条件判断语句:布尔表达式,true继续循环,false终止循环;
  • 条件控制语句:更新循环变量(常用++/--);
  • 循环体:需要重复执行的代码。

5.2 执行流程

  1. 执行初始化语句;
  2. 执行条件判断,结果为false → 循环直接结束;
  3. 结果为true → 执行循环体;
  4. 执行条件控制语句;
  5. 回到第二步,重复判断执行。

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 循环注意事项

  1. 循环括号内定义的变量,循环结束后自动释放,外部无法使用;
  2. 循环体{}内定义的变量,每一轮循环结束都会释放;
  3. 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 执行流程

  1. 执行初始化语句;
  2. 判断条件,true执行循环体,false结束循环;
  3. 执行条件控制语句,再次回到条件判断。

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 三种循环整体对比

  1. forwhile先判断,后执行
  2. do…while先执行,后判断
  3. 变量作用:for 循环变量仅限循环内,while/do…while 变量外部可访问;
  4. 使用场景:已知次数用 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; // 直接跳出外层循环
        }
    }
}

九、全文总结

  1. 顺序结构:程序默认执行顺序,从上至下逐行运行;
  2. 分支语句
    • if:适配区间、复杂条件判断,分单分支、双分支、多分支;
    • switch:适配固定等值判断,注意 case 穿透与支持的数据类型;
  3. Debug 工具:断点逐行调试,是排查 BUG、理解执行流程的必备技能;
  4. 循环语句
    • for:已知循环次数首选,变量作用域仅限循环内;
    • while:未知循环次数首选,先判断后执行;
    • do…while:至少执行一次循环体;
    • 循环嵌套:外循环一次,内循环一轮;
  5. 跳转语句
    • break:结束循环 /switch;
    • continue:跳过当前轮循环;

流程控制是 Java 逻辑代码的核心,后续集合、IO、框架业务都会大量使用,建议多动手练习各类案例,熟练语法与使用场景。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐