Java 中的控制流程是程序执行的核心它决定了代码的执行顺序、分支选择和循环执行是实现程序逻辑的基础。无论是简单的条件判断还是复杂的循环迭代都离不开控制流程语句。本文将系统讲解 Java 中三大核心控制流程分支结构、循环结构和跳转语句结合实例帮你彻底掌握程序的执行逻辑写出更灵活、高效的代码。一、分支结构根据条件选择执行路径分支结构让程序能根据条件判断结果选择执行不同的代码块核心分为if-else分支和switch分支分别适用于复杂条件判断和固定值匹配判断场景。1. if-else 分支灵活的条件判断if-else是最常用的分支语句支持单分支、双分支和多分支嵌套能处理各种复杂的条件逻辑如数值比较、逻辑运算组合等。1单分支满足条件才执行语法if (条件表达式) { // 条件为true时执行的代码块 }说明条件表达式必须是布尔类型true/false大括号可省略仅一行代码时但不推荐易出语法错误。示例判断数字是否为正数int num 10; if (num 0) { System.out.println(num 是正数); }2双分支二选一执行语法if (条件表达式) { // 条件为true时执行 } else { // 条件为false时执行 }示例判断数字奇偶性int num 7; if (num % 2 0) { System.out.println(num 是偶数); } else { System.out.println(num 是奇数); }3多分支多条件依次判断语法if (条件1) { // 条件1为true时执行 } else if (条件2) { // 条件2为true时执行 } // 可添加多个else if else { // 所有条件都为false时执行 }说明多分支会从上到下依次判断只要有一个条件为 true就会执行对应代码块并跳出分支后续条件不再判断。示例成绩等级判断int score 85; if (score 90) { System.out.println(优秀); } else if (score 80) { System.out.println(良好); } else if (score 60) { System.out.println(及格); } else { System.out.println(不及格); }4if-else 嵌套复杂条件场景在if或else代码块中嵌套另一个if-else处理多层条件判断。示例先判断是否为学生再判断成绩是否及格boolean isStudent true; int score 58; if (isStudent) { if (score 60) { System.out.println(学生成绩及格); } else { System.out.println(学生成绩不及格); } } else { System.out.println(非学生无需判断成绩); }2. switch 分支固定值的匹配判断switch语句适用于一个变量与多个固定值匹配的场景比多分支if-else更简洁执行效率更高JDK7 支持 String 类型JDK14 支持 switch 表达式。1传统 switch 语句语法switch (表达式) { case 常量1: // 表达式匹配常量1时执行 break; // 跳出switch避免穿透 case 常量2: // 表达式匹配常量2时执行 break; // 可添加多个case default: // 表达式不匹配任何常量时执行可选 break; }核心规则表达式类型支持byte、short、int、char及其包装类JDK7 支持StringJDK1.5 支持enum枚举case后必须是常量字面量、final 常量不能是变量break关键字跳出 switch 语句省略会发生 case 穿透执行当前 case 后继续执行后续 case直到遇到 breakdefault可选位置可任意一般放在最后匹配不到任何 case 时执行。示例 1根据数字判断星期int week 3; switch (week) { case 1: System.out.println(星期一); break; case 2: System.out.println(星期二); break; case 3: System.out.println(星期三); break; default: System.out.println(无效的星期数); break; }示例 2case 穿透的妙用多个值执行同一逻辑// 判断月份所属季节 int month 2; switch (month) { case 12: case 1: case 2: System.out.println(冬季); break; case 3: case 4: case 5: System.out.println(春季); break; default: System.out.println(无效月份); break; }2JDK14 switch 表达式推荐传统 switch 需要手动写 break易出错JDK14 引入switch 表达式支持直接返回结果自动避免穿透语法更简洁。语法// 方式1箭头语法推荐 变量 switch (表达式) { case 常量1 - 结果1; case 常量2 - 结果2; default - 默认结果; }; // 方式2yield关键字多代码块时使用 变量 switch (表达式) { case 常量1: // 多行代码 yield 结果1; case 常量2: yield 结果2; default: yield 默认结果; };示例switch 表达式实现星期判断java运行int week 5; String weekName switch (week) { case 1 - 星期一; case 2 - 星期二; case 3 - 星期三; case 4 - 星期四; case 5 - 星期五; case 6 - 星期六; case 7 - 星期日; default - 无效星期数; }; System.out.println(weekName); // 输出星期五3. if-else 与 switch 选择原则当判断条件是复杂逻辑如多条件组合、范围判断时用if-else当判断条件是单个变量与多个固定值匹配时用switch更简洁、高效JDK14 优先使用switch 表达式替代传统 switch 和复杂多分支 if-else。二、循环结构重复执行代码块循环结构让程序能重复执行指定的代码块直到满足终止条件Java 中核心有三种循环for、while、do-while还有 JDK5 引入的增强 for 循环for-each专门用于遍历集合 / 数组。1. while 循环先判断后执行语法先判断条件表达式为 true 则执行循环体否则直接跳出循环适合循环次数不确定的场景。// 初始化循环变量 while (条件表达式) { // 循环体需要执行的代码 // 更新循环变量避免死循环 }核心必须在循环体内更新循环变量否则条件永远为 true造成死循环。示例计算 1-10 的累加和int i 1; // 初始化 int sum 0; while (i 10) { // 条件判断 sum i; // 循环体 i; // 更新循环变量 } System.out.println(1-10累加和 sum); // 输出552. do-while 循环先执行后判断语法先执行一次循环体再判断条件表达式为 true 则继续循环否则跳出适合循环体至少执行一次的场景。// 初始化循环变量 do { // 循环体 // 更新循环变量 } while (条件表达式);说明循环结束后的分号不能省略这是 do-while 的语法标识。示例让用户输入数字直到输入 0 为止至少输入一次import java.util.Scanner; public class DoWhileDemo { public static void main(String[] args) { Scanner sc new Scanner(System.in); int num; do { System.out.println(请输入一个数字输入0退出); num sc.nextInt(); System.out.println(你输入的数字是 num); } while (num ! 0); sc.close(); } }3. for 循环先初始化再判断适合循环次数确定语法将初始化、条件判断、更新变量集中在一处语法简洁适合循环次数明确的场景是最常用的循环。for (初始化循环变量; 条件表达式; 更新循环变量) { // 循环体 }执行顺序执行初始化语句仅执行一次判断条件表达式为 true 则执行循环体为 false 则跳出循环执行更新变量语句回到步骤 2重复执行直到条件为 false。示例 1计算 1-100 的偶数和int sum 0; for (int i 1; i 100; i) { if (i % 2 0) { sum i; } } System.out.println(1-100偶数和 sum); // 输出2550示例 2嵌套 for 循环打印九九乘法表// 外层循环控制行内层循环控制列 for (int i 1; i 9; i) { for (int j 1; j i; j) { System.out.print(j × i (i*j) \t); } System.out.println(); // 换行 }4. 增强 for 循环for-each遍历数组 / 集合语法JDK5 引入专门用于遍历数组或实现 Iterable 接口的集合如 List、Set无需关注索引语法简洁避免索引越界问题。for (元素类型 变量名 : 数组/集合) { // 循环体变量名表示当前遍历的元素 }说明增强 for 循环不能修改数组 / 集合的元素仅遍历也不能跳过元素如需修改或控制索引仍用普通 for 循环。示例 1遍历 int 数组int[] arr {10, 20, 30, 40}; for (int num : arr) { System.out.println(num); // 依次输出10、20、30、40 }示例 2遍历字符串集合import java.util.ArrayList; import java.util.List; public class ForEachDemo { public static void main(String[] args) { ListString list new ArrayList(); list.add(Java); list.add(Python); list.add(C); for (String s : list) { System.out.println(s); } } }5. 循环的核心注意事项避免死循环必须保证循环条件最终会变为 false核心是正确更新循环变量循环嵌套外层循环执行一次内层循环执行全部次数嵌套层数不宜过多影响性能循环选择循环次数确定用普通for循环循环次数不确定用while循环循环体至少执行一次用do-while循环仅遍历数组 / 集合用增强 for 循环。三、跳转语句控制循环 / 分支的执行流程跳转语句用于强制改变程序的执行流程跳出或继续循环或跳出分支Java 中核心的跳转语句有break、continue、return其中break和continue主要用于循环return用于方法返回。1. break跳出当前循环 / 分支break的作用是立即跳出当前所在的循环或 switch 分支不再执行后续代码。在 switch 中跳出 switch 语句避免 case 穿透在循环中跳出当前循环循环直接终止在嵌套循环中仅跳出当前层循环外层循环继续执行。示例 1break 跳出 for 循环找到第一个偶数就退出for (int i 1; i 10; i) { if (i % 2 0) { System.out.println(找到第一个偶数 i); break; // 跳出循环 } }示例 2嵌套循环中 break 跳出内层循环// 外层循环执行3次内层循环找到偶数就跳出 for (int i 1; i 3; i) { System.out.println(外层循环第 i 次); for (int j 1; j 5; j) { if (j % 2 0) { System.out.println(内层找到偶数 j); break; // 仅跳出内层循环 } } }2. continue跳过当前循环继续下一次continue的作用是跳过当前循环的剩余代码直接执行下一次循环的条件判断循环不会终止只是跳过本次。示例打印 1-10 的奇数跳过偶数for (int i 1; i 10; i) { if (i % 2 0) { continue; // 跳过偶数继续下一次循环 } System.out.println(i); // 输出1、3、5、7、9 }3. return方法返回终止整个方法return的核心作用是从当前方法中返回并可携带返回值执行 return 后方法内的后续代码都不会执行包括循环和分支。无返回值方法void用return;直接跳出方法有返回值方法用return 结果;返回指定类型的结果。示例找到目标数字就返回终止方法public static void findNum() { for (int i 1; i 10; i) { if (i 5) { System.out.println(找到目标数字5方法返回); return; // 终止整个方法后续代码不执行 } System.out.println(当前数字 i); } System.out.println(循环结束); // 不会执行 } public static void main(String[] args) { findNum(); }4. 标签label跳出指定层循环进阶在嵌套循环中若需要跳出外层循环可通过标签实现标签是自定义的标识符加在循环前配合 break/continue 使用。语法标签名: 循环语句 { // 循环体 break 标签名; // 跳出标签指定的循环 // continue 标签名; // 跳过标签指定循环的本次继续下一次 }示例标签配合 break 跳出外层循环// 定义标签outer标记外层循环 outer: for (int i 1; i 3; i) { for (int j 1; j 5; j) { if (j 3) { System.out.println(找到j3跳出外层循环); break outer; // 跳出标签outer标记的外层循环 } System.out.println(i i , j j); } }四、控制流程的综合实战猜数字小游戏优化版结合分支、循环、跳转语句优化之前的猜数字小游戏添加猜数次数限制最多 5 次用到for循环、if-else分支、break跳转综合体现控制流程的使用。游戏规则程序随机生成 1-100 的整数用户最多有5 次猜数机会每次猜数后给出 “猜大了 / 猜小了” 的提示猜对则提示 “恭喜答对”并跳出循环5 次都猜错则提示 “游戏结束正确数字是 XXX”。完整代码import java.util.Random; import java.util.Scanner; public class GuessNumberOpt { public static void main(String[] args) { // 生成1-100的随机数 Random random new Random(); int randomNum random.nextInt(100) 1; Scanner sc new Scanner(System.in); System.out.println(猜数字小游戏1-100你有5次机会); // for循环控制5次猜数机会 for (int count 1; count 5; count) { System.out.println(第 count 次猜数请输入); int guessNum sc.nextInt(); // 条件判断 if (guessNum randomNum) { System.out.println(恭喜你 count 次就猜对了正确数字是 randomNum); break; // 猜对跳出循环游戏结束 } else if (guessNum randomNum) { System.out.println(猜大了还剩 (5 - count) 次机会); } else { System.out.println(猜小了还剩 (5 - count) 次机会); } // 5次都猜错 if (count 5) { System.out.println(游戏结束你用完了所有机会正确数字是 randomNum); } } sc.close(); } }五、核心总结分支结构if-else处理复杂条件switch处理固定值匹配JDK14 优先使用 switch 表达式循环结构for次数确定、while次数不确定、do-while至少执行一次、for-each遍历数组 / 集合核心是避免死循环跳转语句break跳出当前循环 / 分支continue跳过本次循环return终止方法标签可实现跳出指定层循环程序逻辑任何复杂的程序逻辑都可通过分支 循环 跳转的组合实现掌握控制流程是编写 Java 程序的基础编码技巧选择最适合的控制流程语句让代码更简洁、易读例如循环次数明确用 for遍历集合用 for-each。控制流程是 Java 的基础中的基础只有熟练掌握才能实现各种业务逻辑。建议多做练习通过简单的小案例如九九乘法表、猜数字、累加求和等巩固用法让代码的执行逻辑尽在掌握。