Răsfoiți Sursa

docs: 更新20260720课堂笔记,同步代码变更——新增对象数组、循环创建对象存入数组、多个类协同建模(古诗黄鹂白鹭+交通汽车自行车)

WanJL 1 zi în urmă
părinte
comite
b021150be0

+ 1 - 1
README.md

@@ -41,5 +41,5 @@
 | 2026-07-15 | switch分支、循环结构与数组 | `c260715` | [默认包](./授课代码/c260715/src/) |
 | 2026-07-16 | 多维数组、forEach、Arrays工具类、三种排序算法(冒泡/选择/插入)与 Scanner 键盘输入 | `c260716` | [默认包](./授课代码/c260716/src/) |
 | 2026-07-17 | Java方法4种声明方式、数组作为方法参数、Random随机数类、在线OJ编码模板、三种排序算法复习、Scanner学生信息采集系统(BMI计算) | `c260717` | [默认包](./授课代码/c260717/src/) |
-| 2026-07-20 | 面向对象基础:类与对象、成员变量与成员方法、创建对象与使用成员、对象地址输出、成员变量 vs 局部变量、对象引用与内存共享 | `c260720` | [默认包](./授课代码/c260720/src/) |
+| 2026-07-20 | 面向对象基础:类与对象、成员变量与成员方法、创建对象与使用成员、对象地址输出、成员变量 vs 局部变量、对象引用与内存共享、对象数组、循环创建对象并存入数组、多个类协同建模(古诗场景/交通场景) | `c260720` | [默认包](./授课代码/c260720/src/) |
 

+ 12 - 0
授课代码/c260720/src/BaiLu.java

@@ -0,0 +1,12 @@
+/**
+ * @author WanJl
+ * @version 1.0
+ * @title BaiLu
+ * @description
+ * @create 2026/7/20
+ */
+public class BaiLu {
+    public void up(String s){
+        System.out.println("白鹭上"+s);
+    }
+}

+ 13 - 0
授课代码/c260720/src/Bike.java

@@ -0,0 +1,13 @@
+/**
+ * @author WanJl
+ * @version 1.0
+ * @title Bike 自行车类
+ * @description
+ * @create 2026/7/20
+ */
+public class Bike {
+    String type;
+    public void ride(){
+        System.out.println("我骑着"+type+"自行车在骑行.....");
+    }
+}

+ 15 - 0
授课代码/c260720/src/Car.java

@@ -0,0 +1,15 @@
+/**
+ * @author WanJl
+ * @version 1.0
+ * @title Car 汽车类
+ * @description
+ * @create 2026/7/20
+ */
+public class Car {
+    String brand;
+    String color;
+    public void drive(){
+        System.out.println(brand+"牌的"+color+"汽车行驶.....");
+
+    }
+}

+ 15 - 1
授课代码/c260720/src/Demo03.java

@@ -37,6 +37,20 @@ public class Demo03 {
         局部变量没有默认的初始化值,必须要先定义,初始化赋值才能使用
 
      */
-
+    /*
+        练习:
+        1、两只黄鹂鸣翠柳
+        一行白鹭上青天
+        分析这两句诗,创建对应的
+        类以及类的成员
+        并在测试类中创建对应的对象调用方法
+        描述:一辆汽车在路上行驶,一队自行车并排骑行
+       2、 需求分析:
+        类 1:Car(单个对象)
+        属性:品牌、颜色;方法 drive () 行驶
+        类 2:Bike(对象数组,一队)
+        属性:车型;方法 ride () 骑行
+        测试类:创建汽车对象,创建自行车数组,分别调用方法
+     */
 
 }

+ 12 - 0
授课代码/c260720/src/HuangLi.java

@@ -0,0 +1,12 @@
+/**
+ * @author WanJl
+ * @version 1.0
+ * @title HuangLi
+ * @description 黄鹂类
+ * @create 2026/7/20
+ */
+public class HuangLi {
+    public void sing(String s){
+        System.out.println("黄鹂鸣"+s);
+    }
+}

+ 34 - 0
授课代码/c260720/src/Test01.java

@@ -0,0 +1,34 @@
+import java.util.Arrays;
+
+/**
+ * @author WanJl
+ * @version 1.0
+ * @title Test01
+ * @description
+ * @create 2026/7/20
+ */
+public class Test01 {
+    public static void main(String[] args) {
+        HuangLi h1=new HuangLi();
+        HuangLi h2=new HuangLi();
+        String s1="翠柳";
+        h1.sing(s1);
+        h2.sing(s1);
+
+        //一行白鹭,需要数组
+        String s2="青天";
+        BaiLu[] bailus=new BaiLu[10];
+        System.out.println(Arrays.toString(bailus));
+        for (int i = 0; i <10; i++) {
+            //创建一个白鹭对象
+            // b存着的其实是 白鹭对象的地址值 BaiLu&15AFBC25
+            BaiLu b=new BaiLu();
+            //调用b对象 上青天的方法
+            b.up(s2);
+            //把创建的白鹭对象b存入到白鹭数组bailus的索引值位置
+            bailus[i]=b;    //其实存入到数组的也是白鹭对象的地址 BaiLu&15AFBC25
+            System.out.println(Arrays.toString(bailus));
+
+        }
+    }
+}

+ 24 - 0
授课代码/c260720/src/Test02.java

@@ -0,0 +1,24 @@
+/**
+ * @author WanJl
+ * @version 1.0
+ * @title Test02
+ * @description 测试类
+ * @create 2026/7/20
+ */
+public class Test02 {
+    public static void main(String[] args) {
+        Car c=new Car();
+        c.brand="奔驰";
+        c.color="白色";
+        c.drive();
+        Bike[] bikes=new Bike[10];
+        for (int i = 0; i <10; i++) {
+            Bike b=new Bike();
+            b.type="山地";
+            //-------------
+            bikes[i]=b;
+            bikes[i].ride();
+
+        }
+    }
+}

+ 157 - 1
课堂笔记/01-JavaSE基础-笔记/20260720-笔记.md

@@ -114,7 +114,33 @@ public class Demo03 {
 
 ---
 
+### 7. 对象数组(Object Array)
 
+**文件**:`Test01.java`, `Test02.java`
+
+对象数组的数组元素类型是**类名**,存储的是对象的**引用地址**(而非对象本身)。
+
+```java
+// 定义一个可以存储 10 个 BaiLu 对象引用的数组
+BaiLu[] bailus = new BaiLu[10];
+// 定义一个可以存储 10 个 Bike 对象引用的数组
+Bike[] bikes = new Bike[10];
+```
+
+**创建对象并存入数组的标准操作**:
+
+```java
+// 1. 先创建对象
+BaiLu b = new BaiLu();
+// 2. 调用对象方法
+b.up("青天");
+// 3. 将对象引用(地址值)存入数组
+bailus[i] = b;
+```
+
+> **对比基本类型数组**:`int[] arr = new int[10]` 存的是数值;对象数组存的是引用(地址)。
+
+---
 
 ## 二、代码实战:类与对象完整示例
 
@@ -232,9 +258,120 @@ public class TeacherTest {
 
 ---
 
+### 4. 对象数组实战①——黄鹂与白鹭(古诗场景)
+
+**文件**:`HuangLi.java`, `BaiLu.java`, `Test01.java`
+
+**定义类——黄鹂(HuangLi.java)**:
+
+```java
+public class HuangLi {
+    public void sing(String s) {
+        System.out.println("黄鹂鸣" + s);
+    }
+}
+```
+
+**定义类——白鹭(BaiLu.java)**:
+
+```java
+public class BaiLu {
+    public void up(String s) {
+        System.out.println("白鹭上" + s);
+    }
+}
+```
+
+**测试类 —— 使用对象数组**:
+
+```java
+public class Test01 {
+    public static void main(String[] args) {
+        // 黄鹂:创建两个对象,调用方法
+        HuangLi h1 = new HuangLi();
+        HuangLi h2 = new HuangLi();
+        String s1 = "翠柳";
+        h1.sing(s1);
+        h2.sing(s1);
+
+        // 白鹭:对象数组,循环创建 10 个对象
+        String s2 = "青天";
+        BaiLu[] bailus = new BaiLu[10];
+        // 初始状态:数组元素全为 null
+        System.out.println(Arrays.toString(bailus));
+
+        for (int i = 0; i < 10; i++) {
+            BaiLu b = new BaiLu();      // 创建白鹭对象
+            b.up(s2);                    // 调用方法
+            bailus[i] = b;              // 存入数组(存的是地址值)
+        }
+    }
+}
+```
+
+> **要点**:对象数组刚刚创建时,所有元素默认为 `null`。需要逐个 `new` 对象并赋值后才能使用。
+
+---
+
+### 5. 对象数组实战②——汽车与自行车(交通场景)
+
+**文件**:`Car.java`, `Bike.java`, `Test02.java`
+
+**定义类——汽车(Car.java)**:
+
+```java
+public class Car {
+    String brand;   // 品牌
+    String color;   // 颜色
+
+    public void drive() {
+        System.out.println(brand + "牌的" + color + "汽车行驶.....");
+    }
+}
+```
+
+**定义类——自行车(Bike.java)**:
+
+```java
+public class Bike {
+    String type;    // 车型
+
+    public void ride() {
+        System.out.println("我骑着" + type + "自行车在骑行.....");
+    }
+}
+```
+
+**测试类 —— 单个对象 + 对象数组**:
+
+```java
+public class Test02 {
+    public static void main(String[] args) {
+        // 单个汽车对象
+        Car c = new Car();
+        c.brand = "奔驰";
+        c.color = "白色";
+        c.drive();
+
+        // 自行车对象数组
+        Bike[] bikes = new Bike[10];
+        for (int i = 0; i < 10; i++) {
+            Bike b = new Bike();
+            b.type = "山地";
+            bikes[i] = b;
+            bikes[i].ride();
+        }
+    }
+}
+```
+
+> **要点**:单个对象与对象数组混合使用,展示了面向对象建模中「1 对 N」关系的代码实现。
+
+---
+
 ## 三、随堂练习
 
-> 以下练习在 `Demo02.java` 中以注释形式列出,作为课后实现任务。
+> 以下练习在 `Demo02.java` 和 `Demo03.java` 中以注释形式列出,作为课后实现任务。
 
 ### 练习 1:教师类完整定义
 
@@ -268,6 +405,22 @@ public class TeacherTest {
 
 ---
 
+### 练习 6:古诗场景建模(Demo03 练习)
+
+分析诗句「两只黄鹂鸣翠柳,一行白鹭上青天」,创建对应类和测试类:
+- 黄鹂类(`HuangLi`):`sing(String s)` 方法
+- 白鹭类(`BaiLu`):`up(String s)` 方法
+- 测试类:创建 2 只黄鹂对象 + 10 只白鹭对象数组
+
+### 练习 7:交通场景建模(Demo03 练习)
+
+分析描述「一辆汽车在路上行驶,一队自行车并排骑行」,创建对应类和测试类:
+- 汽车类(`Car`):品牌、颜色属性 + `drive()` 方法
+- 自行车类(`Bike`):车型属性 + `ride()` 方法
+- 测试类:1 个汽车对象 + 10 辆自行车对象数组
+
+---
+
 ## 四、知识点总结
 
 | 序号 | 知识点 | 说明 | 对应文件 |
@@ -282,6 +435,9 @@ public class TeacherTest {
 | 8 | 对象地址 | 直接输出对象得到 `类型@哈希码` | `TeacherTest.java` |
 | 9 | 成员变量 vs 局部变量 | 四维对比:位置、内存、生命周期、初始化值 | `Demo03.java` |
 | 10 | 对象引用与内存共享 | 多个引用指向同一内存地址,修改互相影响 | `Demo03.java` |
+| 11 | 对象数组 | 数组元素类型为类名,存储对象引用地址 | `Test01.java`, `Test02.java` |
+| 12 | 循环创建对象并存入数组 | for 循环中 `new` 对象,赋值给数组元素 | `Test01.java`, `Test02.java` |
+| 13 | 多个类协同建模 | 将现实场景(古诗/交通)抽象为多个类 | `HuangLi.java`, `BaiLu.java`, `Car.java`, `Bike.java` |
 
 ---