158 lines
5.7 KiB
Markdown
158 lines
5.7 KiB
Markdown
# 第一阶段教案: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 行代码,肌肉记忆很重要
|