课程资料校正与版本说明
这些校正针对资料内容和适用版本,不推断学习者的思维过程。原文件保留原样,文章使用校正后的讲解。
继续上次小节 →Java 进阶线 · 线路目录
Java 进阶线
对象与类型设计3 站
文件、配置与并发4 站
网络、框架与复习3 站
本页导读
课程资料校正与版本说明
这些校正针对资料内容和适用版本,不推断学习者的思维过程。原文件保留原样,文章使用校正后的讲解。
经过本机编译验证的三处问题
| 来源 | 原记录 | 正确结论 | 验证方式 |
|---|---|---|---|
| day02 作业选择题第 9 题 | 标 D 为唯一可行定义 | D 合法,B 的抽象子类也合法 | 抽出 Shape 与 abstract Circle,javac --release 17 成功 |
| day02 作业选择题第 10 题 | 标 A 为输出 | 原代码不能编译,缺继承且引用错误的 super.name | 原代码去除排版空白后编译失败,报构造器不匹配、字段不存在和类型不兼容 |
| day03 作业排错题 3 | 询问匿名内部类静态方法是否错误,容易套用旧规则 | Java 8 编译失败,Java 17 合法;接口静态方法也不因此成为可重写方法 | 最小同构程序以 --release 8 失败、--release 17 成功 |
验证使用本机 JDK 21 编译器指定目标 release,未修改原课程文件,也未分别安装或运行 Java 8/17 的 JVM。编译诊断用于确认语法和类型问题,运行期兼容性另看运行测试。
根据技术约定校正的表述
| 来源与主题 | 修正说明 | 文章位置 |
|---|---|---|
| day01 作业的 static 答案 | static 不仅修饰方法或常量,还可修饰变量、代码块、成员嵌套类;常量与 static 概念不同 | 01 |
| day01 静态代码块 | 对应类初始化,不应把类加载与初始化完全等同 | 01 |
| day01 副卡余额需求 | 两张卡使用同一主账户余额,需要共享账户对象;继承字段不会自动共享两个实例的余额 | 01 |
| day02 接口方法课件 | default/static 从 Java 8 起支持,private 方法从 Java 9 起支持;private 不隐含 public | 02 |
| day02 final 排错题 | final 引用不能重新赋值,但可变对象的字段仍可修改 | 02 |
| day03 包装类单词表 | 八种包装类不包含 String | 03 |
| day03 泛型擦除课件 | 具体类型参数多被擦除,但 class 文件仍可保留泛型签名元数据 | 03 |
| day03 Integer 比较题 | 至少缓存 -128..127,也可能缓存更多;不依赖 200 对象的 == 得出跨环境保证 | 03 |
| day04 日期毫秒起点 | UTC 1970-01-01 00:00,对上海为 08:00;显示时区不改变 epoch | 04 |
| day04 Period | getDays 不是跨月总天数,总天数使用 ChronoUnit.DAYS | 04 |
| day05 Comparator | 不用减法或浮点强转整数代替安全比较 | 05 |
| day06 异常课件 | 受检异常表示编译器检查处理义务,不表示失败发生在编译期;throws 是声明,throw 才执行抛出 | 06 |
| day06 Set 总结 | 唯一性是共性,LinkedHashSet 保插入顺序,TreeSet 按比较排序 | 06 |
| day06 集合性能 | ArrayList 末尾追加通常摊销 O(1);LinkedList 中间修改的优势需要已经定位节点 | 06 |
| day08 路径课件 | 相对路径以工作目录解析,绝对路径不是跨平台都必须带盘符 | 08 |
| day08/09 字符集 | 并非所有英文编码都占一个字节,也并非所有汉字 UTF-8 都是三个字节 | 09 |
| day08/09 一次读取整个文件 | 单次 read 不保证填满;小文件可 readAllBytes,大文本使用连续解码 Reader | 09 |
| day10 文本乱码 | 关键是实际输入字节与 Reader 使用编码一致,不能只比较源码编码 | 10 |
| day10 缓冲与文章排序 | char 缓冲不等于字节缓冲;编号可能超过一位,应解析完整数字 | 10 |
| day11 Properties | load(InputStream) 使用 ISO-8859-1;UTF-8 中文可用显式 Reader | 11 |
| day11 日志配置 | logback.xml 需要位于适当运行时 classpath,src 只是课堂布局 | 11 |
| day12 shutdown 注释 | shutdown 启动有序关闭但不等待完成;shutdownNow 也不保证立即停下 | 12 |
| day13 TCP 说明 | TCP 字节流确认不代表应用已保存成功,需应用回执;没有自动业务消息边界 | 13 |
| day14 讲义拼写与测试规则 | AfterCalss 应为 AfterClass;JUnit 4 与 Jupiter 的可见性、生命周期规则分开看 | 14 |
| day14 反射范围 | declared 只看当前类声明;普通 public 方法/字段查询可包含继承成员 | 14 |
2026-10-16 按 PPT 重写文章时新发现的课件问题
同年 10 月这套文章改为「按课程 PPT 逐日转写」后,逐页核对时又发现以下问题。均在对应文章里就地标注,这里集中登记。
课件与配套代码/讲义自相矛盾
| 来源 | 课件说法 | 实际情况 | 位置 |
|---|---|---|---|
| day02 常量示例 | 字面量写作「传智教育」 | 配套代码写的是「黑马程序员」 | 02 |
| day04 BigDecimal 舍入 | 作业参考答案用 BigDecimal.ROUND_DOWN | 该常量自 Java 9 起已过时,配套代码用 RoundingMode.HALF_UP | 04 |
| day08 作业参考答案 | 第 3 题末行引用变量 size | 该变量未定义,应为 length | 08 |
| day10 Commons-IO 版本 | 步骤里写 commons-io-2.6.jar | 同页配图与工程 lib 实际是 commons-io-2.11.0.jar | 10 |
| day10《出师表》案例 | 称「按首字符编号排序」 | 示例实际是 Collections.sort(data) 整行排序,编号到两位数即错 | 10 |
| day11 日志写法 | LoggerFactory.getLogger("类名") | 配套代码写 getLogger("Test.class") | 11 |
| day11 Dom4j 版本 | 课件列 dom4j-2.1.3.jar | 随课类库为 dom4j-2.1.4.jar | 11 |
| day14 讲义拼写 | @AfterCalss、@Retetion、RetetionPloicy、getDecalaredMethods() | 应分别为 @AfterClass、@Retention、RetentionPolicy、getDeclaredMethods() | 14 |
| day14 讲义 API 名 | 写作 Proxy.newInstance | 实际是 Proxy.newProxyInstance | 14 |
| day14 讲义示例人名 | 用「杨超越/BigStar」 | PPT 第 57 页与代码工程为「章若楠/SuperStar」 | 14 |
| day14 讲义配图 | 引用动态代理流程图 1669622605490.png | 该图在讲义 assets 中不存在,讲义改为文字描述 | 14 |
课件表述与事实不符
| 来源 | 课件说法 | 更准确的表述 | 位置 |
|---|---|---|---|
| day10《出师表》案例 | 按编号排序即可 | 编号仅 1–9 时碰巧正确,两位数会错,需解析完整数字 | 10 |
| day13 挥手过程 | 「四次握手」 | 应为四次挥手 | 13 |
| day13 通信范围 | 「点对点」 | 应为端到端 | 13 |
| day13 HTTP 报文 | 第 68 页「状态符」 | 应为原因短语(reason phrase) | 13 |
| day09 编码规则 | 第 6 页「首位是 0」,第 7 页「首尾是 0」 | 两页自相矛盾,正文以首位标记的说明为准 | 09 |
课程结构上的错位(对照学习时注意)
- day02 的目录页列有「枚举」,但该 PPT 无任何枚举内容页;枚举实际在 day03。
- day03 的 PPT(题为「面向对象进阶(三)」)同时包含 Object、Objects、包装类、StringBuilder、StringJoiner 等常用 API 内容,这部分不在 day04。
- day04 的 PPT 首页标题是「常用 API(二)」,并不含 Object/包装类/String/Arrays 章节。
- day05 课件文件名含「异常」,但全 61 页无异常内容;异常在 day06。
- day07 课件文件名含「Stream 流」,但全 56 页无 Stream 内容;Stream 实际在 day08 PPT 第 1–12 页。
- day09 不含字节缓冲流,缓冲流在 day10。
- day13 PPT 既无代码,也无「文件上传」内容;文章 §7.3 按作业文档补充并已标注。
- 各天作业文件名与内容编号常不一致(如
day12-多线程/作业/…/day09每日练习.md、day08 作业标题写作「day11IO流」),以所在文件夹为准。
素材层面的限制(影响图示与表格)
- 14 天 PPT 的媒体文件大多是装饰性素材(卡通人物、表情包、大字标题、封面背景),真正有信息量的代码截图、内存图、原理图只占少数;day02、day07、day10、day12 可用图极少。
- 以形状 + 文本框绘制的示意图(多数内存结构图、部分流程图)无法作为独立图片导出,文章改以文字与代码还原。
- PPT 表格在转文本时经常丢失(多天出现
[表格]占位),文章中的表格按课件题目页、配套代码与 JDK API 还原,并在正文标注了还原来源。 - day12 中有两张 25MB/64MB 级图片与 day13 中 4 张 162–250 字节的空白图,已分别按「装饰图不收录」「损坏图忽略」处理。
官方资料核对入口
- JLS 17 内部类静态成员规则
- Integer.valueOf 缓存约定
- InputStream 批量读取规则
- Properties 编码与流的所有权
- Stream 操作及 toList 约定
- ThreadPoolExecutor 参数与拒绝处理
- Socket.shutdownOutput 半关闭
- JUnit 5.10 用户指南
这些链接用于核对版本和边界,课程文章的主体按本地资料重新组织。进一步使用当前第三方依赖时,应另查其当前官方兼容说明。