章节导读
本章定位:程序由"数据和指令"两部分构成。数据是程序的血液,而控制流程则是程序的骨架——它决定了指令执行的顺序与分支。本章系统讲解 Java SE 8 中的选择结构(if-else、switch)和循环结构(for、while、do-while),以及流程跳转关键字(break、continue),帮助你写出逻辑严密、可读性高的代码。
飞翔科技场景导入
飞翔科技的绩效评级系统出了 Bug——一个员工同时被评了 A 和 C,薪资计算翻倍。孔蓝(测试工程师)定位后发现:小崔的 if-else 嵌套少了一层大括号,导致 else 匹配错了 if。
白歌在周会上说:"这就是经典的 dangling else 问题。控制流程看似简单,但嵌套一深,Bug 率翻倍。今天我们把 if-else、switch、三种循环和 break/continue 全部讲透。"
本章的所有示例都来自飞翔科技的真实业务:员工绩效评级、学生成绩统计、用户登录重试、商品库存遍历、命令行菜单交互。
知识图谱
各文件学习路线
| 文件 | 核心内容 | 难度 | 建议学时 |
|---|---|---|---|
| if-else选择结构.md | 单/双/多分支、嵌套if、dangling else | ★★☆ | 1 |
| switch多分支选择.md | 支持类型、tableswitch/lookupswitch、穿透vs break | ★★☆ | 1 |
| for循环.md | 三要素、嵌套循环、增强for | ★★☆ | 1 |
| while循环.md | 先判断后执行、循环三要素 | ★★☆ | 1 |
| do-while循环.md | 先执行后判断、与while的区别 | ★☆☆ | 0.5 |
| break与continue.md | 循环跳转、带标签跨层控制 | ★★☆ | 0.5 |
前置知识
| 知识点 | 说明 |
|---|---|
| 基本数据类型 | int、char、boolean 的表示与运算 |
| 关系运算符 | > < == != 等返回 boolean |
| 逻辑运算符 | && ` |
| 数组基础 | 数组的声明与遍历(增强for需要) |
学习目标
- 理解三种程序结构(顺序、选择、循环)在 JVM 层面的执行机制
- 熟练运用 if-else 多分支,避免 dangling else 陷阱
- 掌握 switch 的适用场景,理解 case 穿透与 tableswitch/lookupswitch 底层差异
- 灵活运用 for/while/do-while 三种循环及三者间的转换
- 精确控制 break 和 continue,包括带标签的跨层跳转
面试高频考点
| 考点 | 出现频率 | 典型问题 |
|---|---|---|
| switch 支持类型 | 90% | switch 能用于 String 吗?long 呢? |
| for vs while 选择 | 75% | 什么场景用哪种循环? |
| break 与 continue 区别 | 70% | 带标签的 break 跳出几层? |
| case 穿透 | 65% | 不加 break 会发生什么? |
与下一章的衔接
控制流程让你的代码有了"判断"和"重复"的能力。下一章「数组」将为你提供批量处理数据的能力——100个学生的成绩不必声明100个变量,一个 int[] 加一个 for 循环足矣。
大翔的寄语:Böhm-Jacopini 定理(1966)早已证明:任何程序都可以由顺序、选择、循环三种结构组合而成。掌握这三种结构,你就掌握了程序逻辑的万能积木。
准备好了吗?让我们从最基础的选择结构——if-else 开始。