Explorar o código

docs: 根据 day04 授课代码全面重构笔记

- 补充编码/解码概念(Demo01)
- 补充按权展开法代码引用(Demo02)
- 补充除基取余法代码引用(Demo03)
- 练习题补充完整答案(Demo03)
- 重构课堂练习表格(Demo04)
- 新增循环结构练习 - 斐波那契数列/素数/数列求和/回文数/阶乘(Demo05~Demo09)
- 新增代码索引一览表
WanJL hai 4 días
pai
achega
6e2ea12216

+ 12 - 0
授课代码/java-prep-bootcamp/src/com/lovecoding/day04/Demo05.java

@@ -0,0 +1,12 @@
+package com.lovecoding.day04;
+
+
+/**
+ * @title Demo05
+ * @description 
+ * @author WanJl
+ * @version 1.0
+ * @create 2026/7/10
+ */
+public class Demo05 {
+}

+ 12 - 0
授课代码/java-prep-bootcamp/src/com/lovecoding/day04/Demo06.java

@@ -0,0 +1,12 @@
+package com.lovecoding.day04;
+
+
+/**
+ * @title Demo06
+ * @description 
+ * @author WanJl
+ * @version 1.0
+ * @create 2026/7/10
+ */
+public class Demo06 {
+}

+ 12 - 0
授课代码/java-prep-bootcamp/src/com/lovecoding/day04/Demo07.java

@@ -0,0 +1,12 @@
+package com.lovecoding.day04;
+
+
+/**
+ * @title Demo07
+ * @description 
+ * @author WanJl
+ * @version 1.0
+ * @create 2026/7/10
+ */
+public class Demo07 {
+}

+ 12 - 0
授课代码/java-prep-bootcamp/src/com/lovecoding/day04/Demo08.java

@@ -0,0 +1,12 @@
+package com.lovecoding.day04;
+
+
+/**
+ * @title Demo08
+ * @description 
+ * @author WanJl
+ * @version 1.0
+ * @create 2026/7/10
+ */
+public class Demo08 {
+}

+ 25 - 0
授课代码/java-prep-bootcamp/src/com/lovecoding/day04/Demo09.java

@@ -0,0 +1,25 @@
+package com.lovecoding.day03;
+
+
+/**
+ * @author WanJl
+ * @version 1.0
+ * @title Demo10
+ * @description 求1!+2!+3!+...+10!的值 阶乘相加
+ * 计算 1! + 2! + 3! + ... + 10! 的值并输出。其中 n! = 1×2×3×...×n。
+ *  1!      1*1
+ *  2!      1*2
+ *  3!      1*2*3
+ * @create 2026/7/10
+ */
+public class Demo10 {
+    public static void main(String[] args) {
+        int sum=0;//结果 和
+        int f=1;    //起始值 1
+        for (int i = 1; i <=10; i++) {
+            f*=i;   //乘
+            sum+=f; //累加
+        }
+        System.out.println(sum);
+    }
+}

+ 164 - 59
课堂笔记/00-Java预科-笔记/20260710-进制与进制转换.md

@@ -26,10 +26,8 @@
 
 **十六进制 A~F 对应值**:A=10, B=11, C=12, D=13, E=14, F=15
 
-### 编码与解码
-
-- **编码**:将人能看懂的信息(十进制数、文本、图片等)转换为二进制数据
-- **解码**:编码的逆过程,将二进制数据转换回人能看懂的信息
+**编码**:把人能看懂的信息(十进制数、文本、图片等)转换为二进制数据的过程。  
+**解码**:编码的逆过程,把二进制数据转换回人能看懂的信息。
 
 ---
 
@@ -46,8 +44,6 @@
 
 结果:`1×8 + 1×4 + 0×2 + 1×1 = 13`(十进制)
 
-**示例**:`1010` → `1×8 + 0×4 + 1×2 + 0×1 = 10`
-
 ---
 
 ## 四、八进制 → 二进制 与 十六进制 → 二进制
@@ -96,35 +92,11 @@
 0x3F → 3×16¹ + 15×16⁰ = 48 + 15 = 63
 ```
 
----
-
-## 六、Java 代码示例
-
-```java
-int a = 0b0101011;     // 二进制,加前缀 0b
-int b = 01234567;      // 八进制,加前缀 0
-int c = 0x123AFEC9;    // 十六进制,加前缀 0x
-
-System.out.println(a);  // Java 自动转换为十进制输出
-System.out.println(b);
-System.out.println(c);
-```
-
----
-
-## 七、知识总结
-
-| 知识点 | 要点 |
-|-------|------|
-| 二进制 | `0b` 前缀,基数 2,符号 0/1 |
-| 八进制 | `0` 前缀,基数 8,3位二进制对应1位八进制 |
-| 十六进制 | `0x` 前缀,基数 16,4位二进制对应1位十六进制 |
-| 按权展开法 | 每位数字 × 位权,再求和 → 得到十进制 |
-| 编码/解码 | 人→机器(编码),机器→人(解码) |
+> 对应授课代码:`Demo02.java` — 按权展开法示例
 
 ---
 
-## 、十进制 → 任意进制(除基取余法)
+## 六、十进制 → 任意进制(除基取余法)
 
 **方法**:不断除以目标进制,取余数,**从下往上**排列余数。
 
@@ -168,28 +140,52 @@ System.out.println(c);
 
 > 结果:十进制数 255 = 十六进制数 FF
 
+> 对应授课代码:`Demo03.java` — 除基取余法示例
+
 ---
 
-## 九、进制转换总结
+## 七、Java 代码示例
 
-| 转换方向 | 方法 | 说明 |
-|---------|------|------|
-| 任意进制 → 十进制 | 按权展开法 | 每位数字 × 位权,再求和 |
-| 十进制 → 任意进制 | 除基取余法 | 不断除以目标进制,取余数从下往上排列 |
+```java
+int a = 0b0101011;     // 二进制,加前缀 0b
+int b = 01234567;      // 八进制,加前缀 0
+int c = 0x123AFEC9;    // 十六进制,加前缀 0x
+
+System.out.println(a);  // Java 自动转换为十进制输出
+System.out.println(b);
+System.out.println(c);
+```
+
+> 对应授课代码:`Demo01.java` — 进制基础概念
 
 ---
 
-## 练习题
+## 八、知识总结
+
+| 知识点 | 要点 |
+|-------|------|
+| 二进制 | `0b` 前缀,基数 2,符号 0/1 |
+| 八进制 | `0` 前缀,基数 8,3位二进制对应1位八进制 |
+| 十六进制 | `0x` 前缀,基数 16,4位二进制对应1位十六进制 |
+| 按权展开法 | 每位数字 × 位权,再求和 → 得到十进制 |
+| 除基取余法 | 不断除以目标进制,取余数从下往上排列 → 得到目标进制 |
+| 编码/解码 | 人→机器(编码),机器→人(解码) |
+
+---
+
+## 九、练习题(进制转换)
 
 将十进制数 357 分别转换为二进制、八进制、十六进制:
-- 二进制:
-- 八进制:
-- 十六进制:
+- 二进制:**101100101**
+- 八进制:**545**
+- 十六进制:**165**
 
 将十进制数 1234 分别转换为二进制、八进制、十六进制:
-- 二进制:
-- 八进制:
-- 十六进制:
+- 二进制:**10011010010**
+- 八进制:**2322**
+- 十六进制:**4D2**
+
+> 答案来自授课代码 `Demo03.java`
 
 ---
 
@@ -206,29 +202,138 @@ System.out.println(c);
 ### Java 代码示例
 
 ```java
-// char 类型可以直接赋值为整数,输出时自动转为对应字符
 char c2 = 67;   // 对应 'C'
 char c3 = 90;   // 对应 'Z'
 System.out.println(c2);  // 输出 C
 System.out.println(c3);  // 输出 Z
 
-// 判断字符是否为大写英文字母(利用 ASCII 码值范围)
 char c1 = 'a';
-System.out.println(c1 >= 'A' && c1 <= 'Z');  // false,因为 'a' 不在 65~90 范围
+System.out.println(c1 >= 'A' && c1 <= 'Z');  // false
 ```
 
-### 课堂练习 Demo04.java
+---
+
+## 十一、课堂练习 — 综合复习(Demo04)
+
+`Demo04.java` 涵盖了之前学习的数据类型与运算符的综合练习题:
+
+| 练习 | 知识点 | 代码位置 |
+|------|--------|---------|
+| 算术运算 | `+ - * / %` | 第19~25行 |
+| 判断奇偶 | 三目运算符 `%2==0` | 第27~28行 |
+| 求最大值 | 嵌套三目 | 第30行 |
+| 判断闰年 | `&&` `||` 逻辑运算符 | 第32~33行 |
+| 评分等级 | 嵌套三目 `>=90?A:>=60?B:C` | 第35~36行 |
+| 范围判断 | `&&` 判断 10<x<100 | 第38行 |
+| ASCII 判断大写字母 | 字符比较 `>=65 && <=90` | 第40~47行 |
+| 前置/后置自增 | `++` 前缀与后缀区别 | 第49~55行 |
+| 数位拆分 | `%10` `/10%10` `/100` | 第57~63行 |
+| 三角形判断 | 两边之和大于第三边 | 第65行 |
+
+---
+
+## 十二、循环结构练习(Demo05 ~ Demo09)
+
+day04 引入循环结构(`for`、`while`),以下是课堂练习题:
+
+| 文件 | 题目 | 核心知识点 |
+|------|------|-----------|
+| `Demo05.java` | 输出斐波那契数列前10项 | `for` 循环、变量前移 `a=b; b=c` |
+| `Demo06.java` | 判断素数 | `for` 循环 + `if` 分支 + `break` |
+| `Demo07.java` | 数列求和 1 - 1/2 + 1/3 - ... 前10项 | `for` 循环、正负交替、浮点精度 |
+| `Demo08.java` | 判断回文数 | `while` 循环、数位反转 `b=b*10+f` |
+| `Demo09.java` | 计算 1!+2!+...+10! | `for` 循环、阶乘累积 `f*=i` |
+
+### Demo05 — 斐波那契数列
+
+第1项为0,第2项为1,从第3项开始每项等于前两项之和。
+
+```java
+int a = 0, b = 1;
+System.out.println(a);
+System.out.println(b);
+for (int i = 3; i <= 10; i++) {
+    int c = a + b;
+    System.out.println(c);
+    a = b;
+    b = c;
+}
+```
 
-授课代码中的 `Demo04.java` 涵盖以下知识点:
+### Demo06 — 判断素数
 
-| 练习 | 知识点 |
-|------|--------|
-| 算术运算 | `+ - * / %` |
-| 三目运算符 | 判断奇偶、求最大值、嵌套三目评分 |
-| 闰年判断 | `&&` `\|\|` 逻辑运算符 |
-| 字符比较 | ASCII 码值范围判断大写字母 |
-| 自增自减 | `++` 前置与后置的区别 |
-| 数位拆分 | 正整数按位取个、十、百位 |
-| 三角形判断 | 任意两边之和大于第三边 |
+素数:大于1的自然数,除了1和它本身外不再有其他因数。
+
+```java
+int n = 17;
+boolean b = n > 1;
+for (int i = 2; i <= n; i++) {
+    if (n % i == 0) {
+        b = false;
+        break;
+    }
+}
+System.out.println(b ? "no" : "yes");
+```
+
+### Demo07 — 数列求和(正负交替)
+
+求 1 - 1/2 + 1/3 - 1/4 + ... 前10项的和。
+
+```java
+double sum = 0;
+for (int i = 1; i <= 10; i++) {
+    if (i % 2 == 1) {
+        sum += 1.0 / i;   // 奇数项为正
+    } else {
+        sum -= 1.0 / i;   // 偶数项为负
+    }
+}
+System.out.printf("%.2f", sum);
+```
+
+### Demo08 — 判断回文数
+
+回文数:正读和反读都一样的数,如 12321。
+
+```java
+int n = 12321;
+int a = n;    // 保存原始值
+int b = 0;    // 用来存放反转后的数
+while (n > 0) {
+    int f = n % 10;   // 取出最后一位
+    b = b * 10 + f;   // 拼接反转
+    n /= 10;          // 去掉最后一位
+}
+System.out.println(a == b ? "yes" : "no");
+```
+
+### Demo09 — 阶乘求和
+
+计算 1! + 2! + 3! + ... + 10! 的值。
+
+```java
+int sum = 0;
+int f = 1;
+for (int i = 1; i <= 10; i++) {
+    f *= i;      // 计算当前阶乘
+    sum += f;    // 累加
+}
+System.out.println(sum);
+```
+
+---
 
-完整代码见: [`Demo04.java`](../../授课代码/java-prep-bootcamp/src/com/lovecoding/day04/Demo04.java)
+## 十三、代码索引
+
+| 文件 | 完整路径 |
+|------|---------|
+| Demo01 | [`Demo01.java`](../../授课代码/java-prep-bootcamp/src/com/lovecoding/day04/Demo01.java) |
+| Demo02 | [`Demo02.java`](../../授课代码/java-prep-bootcamp/src/com/lovecoding/day04/Demo02.java) |
+| Demo03 | [`Demo03.java`](../../授课代码/java-prep-bootcamp/src/com/lovecoding/day04/Demo03.java) |
+| Demo04 | [`Demo04.java`](../../授课代码/java-prep-bootcamp/src/com/lovecoding/day04/Demo04.java) |
+| Demo05 | [`Demo05.java`](../../授课代码/java-prep-bootcamp/src/com/lovecoding/day04/Demo05.java) |
+| Demo06 | [`Demo06.java`](../../授课代码/java-prep-bootcamp/src/com/lovecoding/day04/Demo06.java) |
+| Demo07 | [`Demo07.java`](../../授课代码/java-prep-bootcamp/src/com/lovecoding/day04/Demo07.java) |
+| Demo08 | [`Demo08.java`](../../授课代码/java-prep-bootcamp/src/com/lovecoding/day04/Demo08.java) |
+| Demo09 | [`Demo09.java`](../../授课代码/java-prep-bootcamp/src/com/lovecoding/day04/Demo09.java) |