Parcourir la source

feat: 添加 2026-07-09 流程控制与循环结构笔记

涵盖 if...else 多级分支、for/while/do...while 三种循环
自增自减运算符、数字位运算(取个位/去个位)
嵌套循环打印图形(三角形、空心矩形、菱形)及练习题
WanJL il y a 4 jours
Parent
commit
a67b42a616
1 fichiers modifiés avec 281 ajouts et 0 suppressions
  1. 281 0
      00-Java预科-笔记/20260709-流程控制与循环结构.md

+ 281 - 0
00-Java预科-笔记/20260709-流程控制与循环结构.md

@@ -0,0 +1,281 @@
+# 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)