# Java 流程控制与循环结构 — 学习笔记 **日期**: 2026/07/09 **作者**: WanJl --- ## 一、分支结构 — `if...else` ### 1. 单分支(只有 `if`) ```java if (条件) { // 条件为 true 时执行 } ``` - 条件为 `true` 执行代码块,否则跳过。 ### 2. 双分支(`if...else`) ```java if (条件) { // true } else { // false } ``` ### 3. 嵌套 `if` ```java if (条件1) { if (条件2) { // 条件1 && 条件2 成立 } else { // 条件1 成立,条件2 不成立 } } else { // 条件1 不成立 } ``` ### 4. `if...else if...else` 结构 ```java if (条件1) { // 条件1 成立 } else if (条件2) { // 条件1 不成立,条件2 成立 } else { // 全部不成立 } ``` ### 注意事项 - **字符串比较**应使用 `equals()` 方法,`==` 比较的是引用地址,而非内容。 --- ## 二、循环结构 ### 1. `for` 循环 ```java for (初始化变量; 循环条件; 变量更新) { // 循环体 } ``` **执行流程**: 1. 初始化循环变量(仅执行一次) 2. 判断循环条件 → `true` 执行循环体,`false` 跳出 3. 执行循环体 4. 执行变量更新,跳回第 2 步 ### 2. `while` 循环 ```java 初始化变量; while (循环条件) { // 循环体 // 变量更新; } ``` - **先判断后执行**,可能一次都不执行。 ### 3. `do...while` 循环 ```java 初始化变量; do { // 循环体 // 变量更新; } while (循环条件); ``` - **先执行后判断**,至少执行一次。 ### 4. 三种循环对比 | 循环类型 | 特点 | 最少执行次数 | |---------|------|------------| | `for` | 初始化/条件/更新集中管理 | 0 次 | | `while` | 先判断后执行 | 0 次 | | `do...while` | 先执行后判断 | 1 次 | --- ## 三、自增/自减运算符 ```java int a = 5; ++a; // 前自增:先自增再使用 a++; // 后自增:先使用再自增 ``` --- ## 四、循环应用 — 数字处理(while 实践) ### 1. 统计整数位数(Demo03) ```java int number = 12345; int count = 0; while (number != 0) { number /= 10; // 每次除以 10,去掉一位 count++; // 位数 +1 } // 输出:5 ``` ### 2. 求各位数字之和(Demo04) ```java int number = 12345; int sum = 0; while (number != 0) { sum += number % 10; // 取个位累加 number /= 10; // 去掉个位 } // 1+2+3+4+5 = 15 ``` ### 3. 数字反转(Demo05) ```java int number = 12345; int rev = 0; while (number != 0) { rev = rev * 10 + (number % 10); // 每次取个位拼接到 rev number /= 10; } // 输出:54321 ``` **核心思想**:`number % 10` 取个位 → `number / 10` 去掉个位 → 循环直到 0。 --- ## 五、循环应用 — 图形打印(嵌套 for 实践) ### 1. 直角三角形(Demo06) ``` * ** *** **** ***** ``` ```java for (int i = 1; i <= 5; i++) { for (int j = 0; j < i; j++) { System.out.print("*"); } System.out.println(); } ``` ### 2. 倒直角三角形(Demo07) ``` ***** **** *** ** * ``` ```java for (int i = 1; i <= 5; i++) { for (int j = 5; j >= i; j--) { System.out.print("*"); } System.out.println(); } ``` ### 3. 空心矩形(Demo08) ``` ***** * * * * * * ***** ``` ```java for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (i == 0 || i == 4) { // 第一行和最后一行 System.out.print("*"); } else { if (j == 0 || j == 4) { // 第一列和最后一列 System.out.print("*"); } else { System.out.print(" "); } } } System.out.println(); } ``` **规律**:边框输出 `*`,内部输出空格。 ### 4. 菱形(Demo09) ``` * *** ***** *** * ``` ```java for (int i = 1; i <= 5; i++) { for (int j = 1; j <= 5; j++) { if (i == 1 || i == 5) { // 第 1、5 行 if (j == 3) System.out.print("*"); else System.out.print(" "); } else if (i == 2 || i == 4) { // 第 2、4 行 if (j == 1 || j == 5) System.out.print(" "); else System.out.print("*"); } else { // 第 3 行 System.out.print("*"); } } System.out.println(); } ``` --- ## 六、知识总结 | 知识点 | 说明 | |-------|------| | `if...else` | 分支结构:单分支、双分支、嵌套、`else if` 链 | | `for` 循环 | 初始化/条件/更新集中管理,适合固定次数循环 | | `while` 循环 | 先判断后执行,适合条件驱动循环 | | `do...while` 循环 | 先执行后判断,至少执行一次 | | `++i` / `i++` | 前自增(先增后用)、后自增(先用后增) | | 数字位运算 | `% 10` 取个位,`/ 10` 去掉个位 | | 嵌套循环 | 外层控制行数,内层控制每行内容 | | 图形打印规律 | 分析行列索引关系,用条件控制输出内容 | --- ## 七、练习题 1. 使用三种循环分别输出 `1~100` 2. 使用三种循环分别统计 `1~100` 的和 3. 统计偶数 `1~100` 的和(参考 Demo02)