Files
gc-plan/week1/教案.md
2026-04-29 23:45:17 +08:00

158 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第一阶段教案Java 核心基础速通(第 1 周)
> **学习周期**7 天
> **每日用时**2-3 小时
> **教学方法**概念讲解30min→ 代码演示30min→ 动手练习1-2h
> **最终产出**:命令行通讯录程序
---
## 每日教学大纲
### 第 1 天Hello World —— 迈出第一步
**核心概念**JDK/JRE/JVM 的关系、Java 跨平台原理、编译与运行
**教学重点**
1. JDK开发工具包包含 JRE运行环境JRE 包含 JVM虚拟机
2. Java 程序先编译成 .class 字节码,再由 JVM 执行 —— "一次编译,到处运行"
3. `javac` 是编译器,`java` 是启动器
4. `public static void main(String[] args)` —— 程序的唯一入口
**代码示例** `day01/HelloWorld.java`
```java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Java!");
}
}
```
**常见踩坑**
- IDEA 中右键 → Run 即可运行,无需手动配置环境变量
- 文件名必须和 public 类名完全一致(包括大小写)
---
### 第 2 天:数据与运算 —— 让程序"算"起来
**核心概念**:基本数据类型、变量声明、运算符、字符串拼接
**教学重点**
1. 8 种基本类型byte/short/int/long/float/double/char/boolean
2. 变量声明三要素:类型 + 名称 + 值
3. 算术运算符:`+ - * / %`,注意整数除法截断
4. 字符串用 `String`(不是基本类型,是引用类型),`+` 可拼接
**练习项目**`day02/Calculator.java` —— 一个简单的四则运算计算器
---
### 第 3 天:流程控制 —— 让程序"思考"起来
**核心概念**:条件判断、循环、分支选择
**教学重点**
1. `if / else if / else` —— 分支逻辑
2. `switch` —— 多分支(适合固定值匹配)
3. `for` 循环 —— 已知次数时使用
4. `while` 循环 —— 未知次数时使用(先判断后执行)
5. `do-while` 循环 —— 至少执行一次(先执行后判断)
6. `break` 跳出循环,`continue` 跳过本次
**练习项目**
- `day03/MultiplicationTable.java` —— 打印 9×9 乘法表for 嵌套)
- `day03/GuessNumber.java` —— 猜数字游戏while + if
---
### 第 4 天:数组与方法 —— 组织数据与代码
**核心概念**:数组、动态数组、方法定义与调用
**教学重点**
1. 数组声明:`int[] arr = new int[10];`
2. 数组下标从 0 开始,越界会抛 `ArrayIndexOutOfBoundsException`
3. `ArrayList` 动态数组:`ArrayList<String> list = new ArrayList<>();`
4. 方法的定义:`public static 返回类型 方法名(参数列表) { 方法体 }`
5. 方法的调用:`方法名(实参);`
6. 形参 vs 实参,值传递
**练习项目**`day04/StudentScoreManager.java` —— 学生成绩管理器
- 添加成绩、查看全部、计算平均分、查找最高/最低分
---
### 第 5 天:面向对象(上)—— 用类描述世界
**核心概念**类与对象、构造方法、封装、this 关键字
**教学重点**
1. 类是模板,对象是实例 —— `new 类名()` 创建对象
2. 成员变量 vs 局部变量
3. 构造方法:与类同名,无返回值,用于初始化对象
4. 封装:`private` 修饰成员变量 + `public` getter/setter
5. `this` 关键字:代表当前对象,区分成员变量和局部变量
**练习项目**`day05/Student.java` —— 定义 Student 类
- 属性姓名、年龄、学号private
- 方法:学习、考试、自我介绍
- 写测试类创建 3 个学生对象并调用方法
---
### 第 6 天:面向对象(下)—— 继承与多态
**核心概念**:继承、多态、接口、抽象类
**教学重点**
1. `extends` 继承:子类拥有父类的属性和方法(单继承)
2. `super` 调用父类构造方法或成员
3. 方法重写 `@Override`:子类重新定义父类方法
4. 多态:父类引用指向子类对象 `Animal a = new Dog();`
5. `abstract` 抽象类:不能实例化,可以有抽象方法和普通方法
6. `interface` 接口:完全抽象,一个类可以实现多个接口
**练习项目**`day06/AnimalHierarchy.java` —— 动物继承体系
- 抽象父类 Animal有 name 和抽象方法 makeSound
- 子类 Dog、Cat 重写 makeSound
- 接口 Pet有 play 方法Dog 和 Cat 实现它
---
### 第 7 天:异常处理 + 集合框架 + 综合项目
**核心概念**异常处理、集合框架List/Map/Set
**教学重点**
1. try-catch-finally 处理异常,防止程序崩溃
2. `ArrayList` 有序列表List—— 可重复,有索引
3. `HashMap` 键值对Map—— key 唯一,快速查找
4. `HashSet` 无序集合Set—— 不可重复
5. 泛型 `<T>`:编译期类型检查
**综合项目**`addressbook/` —— 命令行通讯录
- 封装 Contact 类
- 使用 HashMap 存储联系人(以姓名为 key
- 菜单驱动的 CRUD 操作
- 异常处理防止崩溃
---
## 教学方法建议
| 环节 | 时间 | 内容 |
|------|------|------|
| 概念导入 | 15min | 用生活类比引入概念(类=图纸,对象=房子) |
| 代码演示 | 30min | 老师在 IDE 中边写边讲,每个语句解释为什么 |
| 跟练 | 30min | 学员照着敲一遍,感受语法 |
| 独立练习 | 1h | 不看参考代码,独立完成当日练习项目 |
| 复盘 | 15min | 对比参考代码,找出差异和理解盲区 |
## 注意事项
1. **不要跳步**:每天的内容建立在前一天的基础上,确保当天掌握再前进
2. **多犯错**:看到报错不要慌,仔细读错误信息是最快的进步方式
3. **先思考后动手**:在写代码前,先用中文把思路写下来
4. **代码量 > 看书量**:每天至少手敲 100 行代码,肌肉记忆很重要