# J260713班-课程资料 > Java授课资料(J260713 班 | 每日更新) --- ## 一、授课笔记 ### 00 - Java 预科 > Java 入门基础知识,涵盖数据类型、运算符、流程控制、进制转换等。 | 日期 | 笔记 | |------|------| | 2026-07-08 | [数据类型与运算符](./课堂笔记/00-Java预科-笔记/20260708-数据类型与运算符.md) | | 2026-07-09 | [流程控制与循环结构](./课堂笔记/00-Java预科-笔记/20260709-流程控制与循环结构.md) | | 2026-07-10 | [进制与进制转换](./课堂笔记/00-Java预科-笔记/20260710-进制与进制转换.md) | ### 01 - JavaSE 基础 > JavaSE 完整知识体系:Java 语法(变量/运算符/流程控制/数组/方法)→ 面向对象(封装/继承/抽象类/接口/多态/内部类)→ Java API(String/Math/日期时间/包装类)→ 异常处理 → 集合框架与泛型 → 比较器排序/Lambda/Stream 流 → IO 流(File/字节流/字符流/缓冲流)。 | 日期 | 笔记 | |------|------| | 2026-07-13 | [JavaSE 基础入门](./课堂笔记/01-JavaSE基础-笔记/20260713-笔记.md) | | 2026-07-14 | [Java 运算符与流程控制](./课堂笔记/01-JavaSE基础-笔记/20260714-笔记.md) | | 2026-07-15 | [switch 分支、循环结构、数组](./课堂笔记/01-JavaSE基础-笔记/20260715-笔记.md) | | 2026-07-16 | [多维数组、Arrays 工具类、排序算法、Scanner 输入](./课堂笔记/01-JavaSE基础-笔记/20260716-笔记.md) | | 2026-07-17 | [方法 4 种声明方式、Random 随机数、学生信息采集系统](./课堂笔记/01-JavaSE基础-笔记/20260717-笔记.md) | | 2026-07-20 | [面向对象基础:类与对象、封装、包](./课堂笔记/01-JavaSE基础-笔记/20260720-笔记.md) | | 2026-07-21 | [构造方法:重载、this()、单例模式](./课堂笔记/01-JavaSE基础-笔记/20260721-笔记.md) | | 2026-07-22 | [继承:方法重写、super、访问修饰符](./课堂笔记/01-JavaSE基础-笔记/20260722-笔记.md) | | 2026-07-23 | [抽象类、final、模板方法、代码块、接口(含 JDK8/9 新特性)](./课堂笔记/01-JavaSE基础-笔记/20260723-笔记.md) | | 2026-07-24 | [多态、上下转型、instanceof、接口多态、内部类](./课堂笔记/01-JavaSE基础-笔记/20260724-笔记.md) | | 2026-07-27 | [匿名内部类、String 与可变字符串、Math、日期时间](./课堂笔记/01-JavaSE基础-笔记/20260727-笔记.md) | | 2026-07-28 | [异常处理(try-catch/throws/自定义异常)、Object 类](./课堂笔记/01-JavaSE基础-笔记/20260728-笔记.md) | | 2026-07-29 | [包装类、集合框架(ArrayList 底层)、泛型](./课堂笔记/01-JavaSE基础-笔记/20260729-笔记.md) | | 2026-07-30 | [List.of、LinkedList、手写链表](./课堂笔记/01-JavaSE基础-笔记/20260730-笔记.md) | | 2026-07-31 | [LinkedList 多接口、Iterator 迭代器、Map(HashMap 底层)、二叉树](./课堂笔记/01-JavaSE基础-笔记/20260731-笔记.md) | | 2026-08-03 | [比较器排序(Comparable/Comparator)、Collections、可变参数、Lambda](./课堂笔记/01-JavaSE基础-笔记/20260803-笔记.md) | | 2026-08-04 | [函数式编程、Stream 流(中间/终结/收集操作、方法引用)](./课堂笔记/01-JavaSE基础-笔记/20260804-笔记.md) | | 2026-08-06 | [File 文件操作、IO 流入门(字节流)、学生信息管理系统大作业](./课堂笔记/01-JavaSE基础-笔记/20260806-笔记.md) | | 2026-08-07 | [字节缓冲流、接口化文件复制、字符流、字符缓冲流、IO 流体系](./课堂笔记/01-JavaSE基础-笔记/20260807-笔记.md) | | 2026-08-08 | [转换流(字符集转码)、对象序列化与反序列化、序列化注意事项、IO 流体系总结、多线程入门(继承 Thread / 实现 Runnable / 实现 Callable+FutureTask)、课后作业回顾](./课堂笔记/01-JavaSE基础-笔记/20260808-笔记.md) | | 2026-08-10 | [线程操作方法(Thread.sleep 休眠、线程调度方式、CPU 时间片随机性、getPriority/setPriority 优先级)、守护线程(setDaemon、JVM 退出机制、守护线程特点)、线程生命周期(6 种状态)、线程操作方法(join/interrupt/yield/isAlive、Object 类 wait/notify)、线程安全问题(数据竞争、卖票问题、计数器问题、线程安全三大特性)、synchronized 线程同步(监视器锁、三种写法)、多线程三种实现方式综合练习、课后作业回顾(Callable+FutureTask 带返回值求和)](./课堂笔记/01-JavaSE基础-笔记/20260810-笔记.md) | | 2026-08-11 | [volatile 关键字(解决可见性和有序性、不能保证原子性)、JVM 内存模型(工作内存 CPU 缓存 vs 主内存、可见性问题"程序永不退出")、volatile 三大语义(可见性、禁止重排序、不保证原子性)、线程安全三大特性解决方案回顾(原子性→synchronized/Lock/Atomic、可见性→volatile/synchronized/Lock、有序性→volatile/synchronized)、计数器问题升级(volatile 修饰 count 不能保证原子性、synchronized increment() 保证原子性)、Lock 锁(ReentrantLock 可重入锁:相比 synchronized 的优势、unlock 必须放 finally 铁律、公平锁/非公平锁、tryLock 避免死锁、lockInterruptibly 响应中断、synchronized vs Lock 七维对比:语法简洁度/锁释放/可中断/超时等待/锁读读写分离/底层实现 Monitor Lock vs AQS/JDK21 版本更新性能相近)、死锁(线程死锁概念、产生场景资源有限/同步嵌套、4 个必要条件互斥/持有且等待/不可剥夺/循环等待、避免死锁 3 方法固定锁顺序/tryLock 超时获取/高级并发工具 ConcurrentHashMap、死锁复现与修复演示)、线程池(线程池概念、new Thread().start() 三个问题:创建销毁开销大/线程数量不受控/资源利用率低、解决方案【线程复用+任务排队+动态扩容+上限保护】、饭店餐馆类比、ThreadPoolExecutor 7 参数、执行流程核心线程→工作队列→非核心线程→拒绝策略、Demo04 创建线程池、ThreadPoolDemo 8 任务演示)、课后作业回顾(homework0810 Demo_03 卖票问题 synchronized 修复)](./课堂笔记/01-JavaSE基础-笔记/20260811-笔记.md) | | 2026-08-12 | [类的加载机制(java 文件编译→字节码 class 文件→类加载器→内存→JVM 解释→二进制机器码→执行、类加载器作用:将 .class 文件加载到内存,也可能是 jar 包)、类加载的 6 种时机(创建实例对象/调用 static 方法/访问或赋值 static 变量/反射创建 Class 对象/初始化子类/Java.exe 运行主类、懒加载原则:使用时才加载)、类的加载过程(3 大步 5 小步:加载【全限定名获取字节流→转运行时数据结构→生成 Class 对象】→ 链接【验证:符合虚拟机规范无安全隐患/准备:static 变量分配内存设默认值/解析:符号引用替换直接引用】→ 初始化【按主观计划给静态变量赋值】)、Demo01 执行顺序演示(静态代码块 a=10000 → 代码块 a=100 → 构造方法 a=10:类加载先于实例化、静态代码块只执行一次)、类加载器(三种类加载器:BootstrapClassLoader 虚拟机内置表示为 null 无父/PlatformClassLoader 平台类加载器负责 JDK 特殊模块/SystemClassLoader 系统类加载器负责用户类路径类库、双亲委派层级)、Demo02 类加载器获取演示(ClassLoader.getSystemClassLoader/getParent 逐级获取父加载器、bootstrap 打印 null(由 C/C++ 实现 Java 调用返回 null)、对其 getParent() 抛空指针异常)、双亲委派模型(Demo03:收到加载请求先委派给父类加载器、递归至最顶层、顶层无法完成才由子类加载器自己加载、委派向上回退向下、为什么需要双亲委派三个原因:避免类被重复加载/保证核心类库安全(java.lang.String 只能由启动类加载器加载、用户自定义同名类永不加载)/保证类的唯一性)、用类加载器加载资源配置文件(Demo03:getResourceAsStream 加载 prop.properties + Properties(父类 Hashtable、Map 接口实现、底层数组)load 解析 + getProperty 读取数据库配置 db.driver/db.url/db.username/db.password + 调用连接数据库方法 + 关闭流)、反射机制(Demo04:Java 运行时动态机制、运行状态中获取任意类的所有属性和方法(含 private)、动态调用对象任意属性方法、普通调用 vs 反射调用 5 维对比(编译期写死 vs 运行期动态/强耦合 vs 解耦/new 类名 vs Class.forName+newInstance/对象.方法 vs method.invoke/固定 vs 动态切换)、为什么需要反射 3 场景(配置驱动/通用工具/第三方类库解耦)、注意事项(学习反射为理解框架底层源码、日常业务尽量不用:破坏封装性、效率低 3~100 倍)、反射工作机制(Class 对象=类的类模板:Constructor 创建对象/Field 读写字段/Method 调用方法)、反射核心类(Class/Constructor/Field/Method/Modifier/Parameter))、获取 Class 对象的三种方式(Demo05:类名.class 编译期类型检查最安全/对象.getClass() Object 方法需有对象实例/Class.forName("全类名") 字符串传入最灵活框架最常用、同一个类三种方式得到同一个对象 clazz1==clazz2==clazz3、基本类型也有 Class 对象 int.class==Integer.TYPE 为 true、数组也有 Class 对象 int[].class、类加载时机差异:forName 返回前执行静态代码块而 .class 和 getClass 不触发、Class 对象查看类型信息 getName/getSimpleName/getSuperclass/getPackage、Student 演示类(id/name/age/gender 私有字段+study() 方法)+ Person extends Animal 静态代码块验证 forName 触发静态初始化)](./课堂笔记/01-JavaSE基础-笔记/20260812-笔记.md) | ## 二、授课代码 | 日期 | 名称 | 项目名 | 包路径 | |------|------|--------|--------| | 2026-07-08 | 数据类型与运算符 | `java-prep-bootcamp` | [`com.lovecoding.day02`](./授课代码/java-prep-bootcamp/src/com/lovecoding/day02/) | | 2026-07-09 | 流程控制与循环结构 | `java-prep-bootcamp` | [`com.lovecoding.day03`](./授课代码/java-prep-bootcamp/src/com/lovecoding/day03/) | | 2026-07-10 | 进制与进制转换 | `java-prep-bootcamp` | [`com.lovecoding.day04`](./授课代码/java-prep-bootcamp/src/com/lovecoding/day04/) | | 2026-07-13 | JavaSE 基础入门 | `javaSE-260713-FirstJava` | [默认包](./授课代码/javaSE-260713-FirstJava/src/) | | 2026-07-14 | Java 运算符与流程控制 | `c260714` | [默认包](./授课代码/c260714/src/) | | 2026-07-15 | switch分支、循环结构与数组 | `c260715` | [默认包](./授课代码/c260715/src/) | | 2026-07-16 | 多维数组、Arrays 工具类、排序算法、Scanner 键盘输入 | `c260716` | [默认包](./授课代码/c260716/src/) | | 2026-07-17 | 方法 4 种声明方式、Random、学生信息采集系统 | `c260717` | [默认包](./授课代码/c260717/src/) | | 2026-07-20 | 面向对象基础:类与对象、封装、包、对象数组 | `c260720` | [`p1`](./授课代码/c260720/src/p1/) / [`p2`](./授课代码/c260720/src/p2/) | | 2026-07-21 | 构造方法:重载、this()、单例模式 | `c260721` | [`course`](./授课代码/c260721/src/course/) / [`homework/c260717`](./授课代码/c260721/src/homework/c260717/) / [`homework/c260720`](./授课代码/c260721/src/homework/c260720/) / [`exercise/exercise01`](./授课代码/c260721/src/exercise/exercise01/) / [`exercise/exercise02`](./授课代码/c260721/src/exercise/exercise02/) | | 2026-07-22 | 继承:方法重写、super、访问修饰符、综合练习 | `c260722` | [`course`](./授课代码/c260722/src/course/) / [`exercise/studentSystem`](./授课代码/c260722/src/exercise/studentSystem/) / [`homework/p08_guessgame`](./授课代码/c260722/src/homework/p08_guessgame/) / [`homework/p09_bookmanager`](./授课代码/c260722/src/homework/p09_bookmanager/) | | 2026-07-23 | 抽象类、final、模板方法、代码块、接口(JDK8/9 新特性) | `c260723` | [`course`](./授课代码/c260723/src/course/) | | 2026-07-24 | 多态、上下转型、instanceof、接口多态、内部类 | `c260724` | [`course/polymorphism`](./授课代码/c260724/src/course/polymorphism/) / [`course/internalClass`](./授课代码/c260724/src/course/internalClass/) | | 2026-07-27 | 匿名内部类、String 与可变字符串、Math、日期时间 | `c260727` | [`course/anonymousInternalClass`](./授课代码/c260727/src/course/anonymousInternalClass/) / [`course/api`](./授课代码/c260727/src/course/api/) / [`course/api/string`](./授课代码/c260727/src/course/api/string/) / [`course/api/math`](./授课代码/c260727/src/course/api/math/) / [`course/api/date`](./授课代码/c260727/src/course/api/date/) / [`exercise/exercise01`](./授课代码/c260727/src/exercise/exercise01/) / [`exercise/exercise06`](./授课代码/c260727/src/exercise/exercise06/) / [`exercise/exercise07`](./授课代码/c260727/src/exercise/exercise07/) / [`homework_0724/p2_myarray`](./授课代码/c260727/src/homework_0724/p2_myarray/) | | 2026-07-28 | 异常处理、Object 类(equals/hashCode/toString)、课后作业回顾 | `c260728` | [`course/api`](./授课代码/c260728/src/course/api/) / [`course/exception`](./授课代码/c260728/src/course/exception/) / [`homework260727`](./授课代码/c260728/src/homework260727/) / [`exercise/exercise01`](./授课代码/c260728/src/exercise/exercise01/) / [`exercise/exercise07`](./授课代码/c260728/src/exercise/exercise07/) | | 2026-07-29 | 包装类、集合框架(ArrayList 底层)、泛型 | `c260729` | [`course/packaging`](./授课代码/c260729/src/course/packaging/) / [`course/collection`](./授课代码/c260729/src/course/collection/) / [`exercises/exercise01`](./授课代码/c260729/src/exericse/exericse01/) / [`exercises/exercise02`](./授课代码/c260729/src/exericse/exericse02/) | | 2026-07-30 | List.of、LinkedList、手写链表、ArrayList 练习 | `c260730` | [`course`](./授课代码/c260730/src/course/) / [`exericse/exericse01`](./授课代码/c260730/src/exericse/exericse01/) / [`homework0729/p4`](./授课代码/c260730/src/homework0729/p4/) | | 2026-07-31 | LinkedList 多接口、Iterator、Map(HashMap 底层)、二叉树 | `c260731` | [`course`](./授课代码/c260731/src/course/) / [`exericse/exericse01`](./授课代码/c260731/src/exericse/exericse01/) / [`exericse/exericse02`](./授课代码/c260731/src/exericse/exericse02/) | | 2026-08-03 | 比较器排序(Comparable/Comparator)、Collections、可变参数、Lambda、课后作业解析 | `c260803` | [`course`](./授课代码/c260803/src/course/) / [`exericse/exericse02`](./授课代码/c260803/src/exericse/exericse02/) / [`homework0731/p2_map`](./授课代码/c260803/src/homework0731/p2_map/) / [`homework0731/p4_exception`](./授课代码/c260803/src/homework0731/p4_exception/) / [`homework0731/p5_sort`](./授课代码/c260803/src/homework0731/p5_sort/) | | 2026-08-04 | 函数式编程、Stream 流(中间/终结/收集、方法引用)、课后作业回顾 | `c260804` | [`course`](./授课代码/c260804/src/course/) / [`exericse/exericse03`](./授课代码/c260804/src/exericse/exericse03/) / [`homework0803/p4_lambda`](./授课代码/c260804/src/homework0803/p4_lambda/) / [`homework0803/p5_employee`](./授课代码/c260804/src/homework0803/p5_employee/) | | 2026-08-06 | File 文件操作、IO 流入门(字节流)、学生信息管理系统大作业 | `c260806` | [`course`](./授课代码/c260806/src/course/) / [`homework0804`](./授课代码/c260806/src/homework0804/) | | 2026-08-07 | 字节缓冲流、接口化文件复制、字符流、字符缓冲流、IO 流体系 | `c260807` | [`course`](./授课代码/c260807/src/course/) / [`exericse`](./授课代码/c260807/src/exericse/) | | 2026-08-08 | 转换流(字符集转码)、对象持久化(序列化/反序列化)、多线程入门(继承 Thread / 实现 Runnable / 实现 Callable+FutureTask) | `c260808` | [`course`](./授课代码/c260808/src/course/) / [`homework0807`](./授课代码/c260808/src/homework0807/) | | 2026-08-10 | 线程操作方法(Thread.sleep 休眠、线程调度方式、CPU 时间片随机性、线程优先级)、守护线程(setDaemon、JVM 退出机制)、线程生命周期(6 种状态)、线程操作方法(join/interrupt/yield/isAlive、Object 类 wait/notify)、线程安全问题(数据竞争、卖票问题、计数器问题、线程安全三大特性)、synchronized 线程同步(监视器锁、三种写法)、多线程三种实现方式综合练习、课后作业回顾(Callable+FutureTask 带返回值求和) | `c260810` | [`course`](./授课代码/c260810/src/course/) / [`exericse`](./授课代码/c260810/src/exericse/) / [`homework0808`](./授课代码/c260810/src/homework0808/) | | 2026-08-11 | volatile 关键字(解决可见性和有序性、不保证原子性)、JVM 内存模型(工作内存 CPU 缓存 vs 主内存)、可见性问题演示(程序永不退出 VolatileDemo)、计数器问题升级(volatile 不保证原子性、synchronized 保证原子性)、Lock 锁(ReentrantLock 可重入锁:lock/unlock/tryLock/tryLock(timeout)/lockInterruptibly 四种用法、unlock 必须放 finally、公平锁/非公平锁、synchronized vs Lock 七维对比(锁读读写分离/底层实现 AQS/JDK21 版本更新)、10000 线程 count 验证)、死锁(4 个必要条件、死锁复现、避免方法固定锁顺序/tryLock 超时/ConcurrentHashMap)、线程池(ThreadPoolExecutor:7 参数、执行流程、8 任务演示、getActiveCount/getQueue/shutdown)、课后作业回顾(homework0810 Demo_03 卖票问题 synchronized 修复) | `c260811` | [`course`](./授课代码/c260811/src/course/) / [`homework0810`](./授课代码/c260811/src/homework0810/) | | 2026-08-12 | 类的加载机制(java 文件编译→字节码 class 文件→类加载器→内存→JVM 解释→二进制机器码→执行、类加载器作用(也可能是 jar 包)、类加载 6 种时机、懒加载原则、加载过程 3 大步 5 小步:加载→链接(验证/准备/解析)→初始化、静态代码块/代码块/构造方法执行顺序演示 Demo01)、类加载器(三种类加载器:BootstrapClassLoader/PlatformClassLoader/SystemClassLoader、双亲委派层级、ClassLoader.getSystemClassLoader/getParent 获取父加载器演示 Demo02)、双亲委派模型(Demo03:委派机制、为什么需要双亲委派三个原因、getResourceAsStream 加载资源配置文件 + Properties 解析 prop.properties 数据库配置)、反射机制(Demo04:反射概念、普通调用 vs 反射调用 5 维对比、为什么需要反射、反射工作机制、反射核心类)、获取 Class 对象的三种方式(Demo05:类名.class/对象.getClass/Class.forName 演示 + Student/Person/Animal 辅助类) | `c260812` | [`course`](./授课代码/c260812/src/course/) / [`src/prop.properties`](./授课代码/c260812/src/prop.properties) | ## 三、课堂练习题 | 日期 | 练习题 | 涵盖知识点 | |------|--------|-----------| | 2026-07-15 | [数组进阶练习](./课堂练习题/20260715-数组进阶练习.md) | 数组创建、遍历、排序算法 | | 2026-07-17 | [Java 方法基础练习](./课堂练习题/20260717-Java方法基础练习.md) | 方法 4 种声明方式、方法调用 | | 2026-07-20 | [面向对象基础练习](./课堂练习题/20260720-面向对象基础练习.md) | 类与对象、封装、包、方法、数组、Random 综合 | 2026-07-21 | [构造方法练习](./课堂练习题/20260721-构造方法练习.md) | 构造方法重载、this()、private 构造方法、对象数组排序综合 | | 2026-07-22 | [继承练习](./课堂练习题/20260722-继承练习.md) | 继承、方法重写、super()、多态与对象数组综合 | | 2026-07-23 | [抽象类与接口练习](./课堂练习题/20260723-抽象类与接口练习.md) | 抽象类(Shape 面积计算)、模板方法、接口入门 | | 2026-07-24 | [多态练习](./课堂练习题/20260724-多态练习.md) | 多态、上下转型、instanceof、接口多态(Usb 设备管理器) | | 2026-07-27 | [内部类练习](./课堂练习题/20260727-内部类练习.md) | 成员/静态/局部内部类、匿名内部类三种使用方式、策略模式 | | 2026-07-28 | [异常处理练习](./课堂练习题/20260728-异常处理练习.md) | 异常体系、try-catch 多 catch、throws、自定义异常、业务应用(注册验证/ATM) | | 2026-07-29 | [集合框架练习](./课堂练习题/20260729-集合框架练习.md) | ArrayList 增删改查与底层、包装类应用、嵌套结构 | | 2026-07-30 | [LinkedList 双链表练习](./课堂练习题/20260730-LinkedList双链表练习.md) | LinkedList(List/Deque/Queue)、性能对比、手写链表 | | 2026-07-31 | [Iterator迭代器与Map集合练习](./课堂练习题/20260731-迭代器与Map集合练习.md) | Iterator 遍历、HashMap 操作与遍历、自定义 Key、词频统计 | | 2026-08-03 | [比较器排序与可变参数练习](./课堂练习题/20260803-比较器排序练习.md) | 比较器排序(Comparable/Comparator/TreeSet)、Collections.sort、可变参数 | | 2026-08-04 | [Stream 流与函数式编程练习](./课堂练习题/20260804-Stream流练习.md) | Stream 生成/中间/终结/收集操作、方法引用、实体类收集成 Map | | 2026-08-06 | [File 文件操作练习](./课堂练习题/20260806-File文件操作练习.md) | File 构造、创建/删除/判断/获取、listFiles 遍历 | | 2026-08-07 | [IO 字节缓冲流 + 字符流 + 字符缓冲流练习](./课堂练习题/20260807-IO缓冲流练习.md) | 字节缓冲流、接口化复制、字符流/字符缓冲流读写、数据持久化、读取排序写回 | | 2026-08-08 | [对象序列化与转换流练习](./课堂练习题/20260808-对象序列化与转换流练习.md) | 对象序列化/反序列化、Serializable、serialVersionUID、transient、转换流字符集转码 | | 2026-08-10 | [线程操作与生命周期练习](./课堂练习题/20260810-线程操作与生命周期练习.md) | 线程生命周期(getState 6 种状态)、线程优先级(setPriority)、守护线程(setDaemon/JVM 退出机制)、线程协作(join/interrupt/yield) | | 2026-08-11 | [volatile 与 Lock 锁练习](./课堂练习题/20260811-volatile与Lock锁练习.md) | volatile 可见性(程序永不退出)、volatile 不保证原子性 vs synchronized、Lock 锁基本用法(lock/unlock + finally)、Lock 进阶(tryLock / tryLock(timeout) / lockInterruptibly)、Lock 改造卖票问题(synchronized vs Lock 七维对比) |