Без опису

WanJL ae7df396ff docs: 更新20260812课堂笔记,同步代码变更——新增反射机制(Demo04反射概念/普通vs反射调用5维对比/为什么需要反射三场景/工作机制/反射核心类)与获取Class对象三种方式(Demo05类名.class/对象.getClass/Class.forName三方式对比+类加载时机差异forName触发静态代码块+Student/Person/Animal辅助类)章节,补充Demo02 BootstrapClassLoader由C/C++实现返回null注释说明,同步更新README总览两张表 1 тиждень тому
授课代码 ae7df396ff docs: 更新20260812课堂笔记,同步代码变更——新增反射机制(Demo04反射概念/普通vs反射调用5维对比/为什么需要反射三场景/工作机制/反射核心类)与获取Class对象三种方式(Demo05类名.class/对象.getClass/Class.forName三方式对比+类加载时机差异forName触发静态代码块+Student/Person/Animal辅助类)章节,补充Demo02 BootstrapClassLoader由C/C++实现返回null注释说明,同步更新README总览两张表 1 тиждень тому
课后作业 325a0ad058 feat: 新增20260811课程内容——volatile关键字(VolatileDemo可见性程序永不退出)与Lock锁(LockDemo ReentrantLock可重入锁四种用法),死锁演示,线程池(ThreadPoolDemo ThreadPoolExecutor 7参数8任务演示),0810课后作业参考解答(homework0810卖票问题synchronized修复),含课后作业/课堂笔记/课堂练习 1 тиждень тому
课堂笔记 ae7df396ff docs: 更新20260812课堂笔记,同步代码变更——新增反射机制(Demo04反射概念/普通vs反射调用5维对比/为什么需要反射三场景/工作机制/反射核心类)与获取Class对象三种方式(Demo05类名.class/对象.getClass/Class.forName三方式对比+类加载时机差异forName触发静态代码块+Student/Person/Animal辅助类)章节,补充Demo02 BootstrapClassLoader由C/C++实现返回null注释说明,同步更新README总览两张表 1 тиждень тому
课堂练习题 325a0ad058 feat: 新增20260811课程内容——volatile关键字(VolatileDemo可见性程序永不退出)与Lock锁(LockDemo ReentrantLock可重入锁四种用法),死锁演示,线程池(ThreadPoolDemo ThreadPoolExecutor 7参数8任务演示),0810课后作业参考解答(homework0810卖票问题synchronized修复),含课后作业/课堂笔记/课堂练习 1 тиждень тому
.gitignore ca21b5a6ed chore:更新.gitignore忽略规则 1 місяць тому
LICENSE 00cde68bb0 chore: 新增LICENSE开源许可文件 1 тиждень тому
README.md ae7df396ff docs: 更新20260812课堂笔记,同步代码变更——新增反射机制(Demo04反射概念/普通vs反射调用5维对比/为什么需要反射三场景/工作机制/反射核心类)与获取Class对象三种方式(Demo05类名.class/对象.getClass/Class.forName三方式对比+类加载时机差异forName触发静态代码块+Student/Person/Animal辅助类)章节,补充Demo02 BootstrapClassLoader由C/C++实现返回null注释说明,同步更新README总览两张表 1 тиждень тому

README.md

J260713班-课程资料

Java授课资料(J260713 班 | 每日更新)


一、授课笔记

00 - Java 预科

Java 入门基础知识,涵盖数据类型、运算符、流程控制、进制转换等。

日期 笔记
2026-07-08 数据类型与运算符
2026-07-09 流程控制与循环结构
2026-07-10 进制与进制转换

01 - JavaSE 基础

JavaSE 完整知识体系:Java 语法(变量/运算符/流程控制/数组/方法)→ 面向对象(封装/继承/抽象类/接口/多态/内部类)→ Java API(String/Math/日期时间/包装类)→ 异常处理 → 集合框架与泛型 → 比较器排序/Lambda/Stream 流 → IO 流(File/字节流/字符流/缓冲流)。

日期 笔记
2026-07-13 JavaSE 基础入门
2026-07-14 Java 运算符与流程控制
2026-07-15 switch 分支、循环结构、数组
2026-07-16 多维数组、Arrays 工具类、排序算法、Scanner 输入
2026-07-17 方法 4 种声明方式、Random 随机数、学生信息采集系统
2026-07-20 面向对象基础:类与对象、封装、包
2026-07-21 构造方法:重载、this()、单例模式
2026-07-22 继承:方法重写、super、访问修饰符
2026-07-23 抽象类、final、模板方法、代码块、接口(含 JDK8/9 新特性)
2026-07-24 多态、上下转型、instanceof、接口多态、内部类
2026-07-27 匿名内部类、String 与可变字符串、Math、日期时间
2026-07-28 异常处理(try-catch/throws/自定义异常)、Object 类
2026-07-29 包装类、集合框架(ArrayList 底层)、泛型
2026-07-30 List.of、LinkedList、手写链表
2026-07-31 LinkedList 多接口、Iterator 迭代器、Map(HashMap 底层)、二叉树
2026-08-03 比较器排序(Comparable/Comparator)、Collections、可变参数、Lambda
2026-08-04 函数式编程、Stream 流(中间/终结/收集操作、方法引用)
2026-08-06 File 文件操作、IO 流入门(字节流)、学生信息管理系统大作业
2026-08-07 字节缓冲流、接口化文件复制、字符流、字符缓冲流、IO 流体系
2026-08-08 转换流(字符集转码)、对象序列化与反序列化、序列化注意事项、IO 流体系总结、多线程入门(继承 Thread / 实现 Runnable / 实现 Callable+FutureTask)、课后作业回顾
2026-08-10 线程操作方法(Thread.sleep 休眠、线程调度方式、CPU 时间片随机性、getPriority/setPriority 优先级)、守护线程(setDaemon、JVM 退出机制、守护线程特点)、线程生命周期(6 种状态)、线程操作方法(join/interrupt/yield/isAlive、Object 类 wait/notify)、线程安全问题(数据竞争、卖票问题、计数器问题、线程安全三大特性)、synchronized 线程同步(监视器锁、三种写法)、多线程三种实现方式综合练习、课后作业回顾(Callable+FutureTask 带返回值求和)
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 修复)
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 触发静态初始化)

二、授课代码

日期 名称 项目名 包路径
2026-07-08 数据类型与运算符 java-prep-bootcamp com.lovecoding.day02
2026-07-09 流程控制与循环结构 java-prep-bootcamp com.lovecoding.day03
2026-07-10 进制与进制转换 java-prep-bootcamp com.lovecoding.day04
2026-07-13 JavaSE 基础入门 javaSE-260713-FirstJava 默认包
2026-07-14 Java 运算符与流程控制 c260714 默认包
2026-07-15 switch分支、循环结构与数组 c260715 默认包
2026-07-16 多维数组、Arrays 工具类、排序算法、Scanner 键盘输入 c260716 默认包
2026-07-17 方法 4 种声明方式、Random、学生信息采集系统 c260717 默认包
2026-07-20 面向对象基础:类与对象、封装、包、对象数组 c260720 p1 / p2
2026-07-21 构造方法:重载、this()、单例模式 c260721 course / homework/c260717 / homework/c260720 / exercise/exercise01 / exercise/exercise02
2026-07-22 继承:方法重写、super、访问修饰符、综合练习 c260722 course / exercise/studentSystem / homework/p08_guessgame / homework/p09_bookmanager
2026-07-23 抽象类、final、模板方法、代码块、接口(JDK8/9 新特性) c260723 course
2026-07-24 多态、上下转型、instanceof、接口多态、内部类 c260724 course/polymorphism / course/internalClass
2026-07-27 匿名内部类、String 与可变字符串、Math、日期时间 c260727 course/anonymousInternalClass / course/api / course/api/string / course/api/math / course/api/date / exercise/exercise01 / exercise/exercise06 / exercise/exercise07 / homework_0724/p2_myarray
2026-07-28 异常处理、Object 类(equals/hashCode/toString)、课后作业回顾 c260728 course/api / course/exception / homework260727 / exercise/exercise01 / exercise/exercise07
2026-07-29 包装类、集合框架(ArrayList 底层)、泛型 c260729 course/packaging / course/collection / exercises/exercise01 / exercises/exercise02
2026-07-30 List.of、LinkedList、手写链表、ArrayList 练习 c260730 course / exericse/exericse01 / homework0729/p4
2026-07-31 LinkedList 多接口、Iterator、Map(HashMap 底层)、二叉树 c260731 course / exericse/exericse01 / exericse/exericse02
2026-08-03 比较器排序(Comparable/Comparator)、Collections、可变参数、Lambda、课后作业解析 c260803 course / exericse/exericse02 / homework0731/p2_map / homework0731/p4_exception / homework0731/p5_sort
2026-08-04 函数式编程、Stream 流(中间/终结/收集、方法引用)、课后作业回顾 c260804 course / exericse/exericse03 / homework0803/p4_lambda / homework0803/p5_employee
2026-08-06 File 文件操作、IO 流入门(字节流)、学生信息管理系统大作业 c260806 course / homework0804
2026-08-07 字节缓冲流、接口化文件复制、字符流、字符缓冲流、IO 流体系 c260807 course / exericse
2026-08-08 转换流(字符集转码)、对象持久化(序列化/反序列化)、多线程入门(继承 Thread / 实现 Runnable / 实现 Callable+FutureTask) c260808 course / homework0807
2026-08-10 线程操作方法(Thread.sleep 休眠、线程调度方式、CPU 时间片随机性、线程优先级)、守护线程(setDaemon、JVM 退出机制)、线程生命周期(6 种状态)、线程操作方法(join/interrupt/yield/isAlive、Object 类 wait/notify)、线程安全问题(数据竞争、卖票问题、计数器问题、线程安全三大特性)、synchronized 线程同步(监视器锁、三种写法)、多线程三种实现方式综合练习、课后作业回顾(Callable+FutureTask 带返回值求和) c260810 course / exericse / 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 / 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 / src/prop.properties

三、课堂练习题

日期 练习题 涵盖知识点
2026-07-15 数组进阶练习 数组创建、遍历、排序算法
2026-07-17 Java 方法基础练习 方法 4 种声明方式、方法调用
2026-07-20 面向对象基础练习 类与对象、封装、包、方法、数组、Random 综合
2026-07-21 构造方法练习 构造方法重载、this()、private 构造方法、对象数组排序综合
2026-07-22 继承练习 继承、方法重写、super()、多态与对象数组综合
2026-07-23 抽象类与接口练习 抽象类(Shape 面积计算)、模板方法、接口入门
2026-07-24 多态练习 多态、上下转型、instanceof、接口多态(Usb 设备管理器)
2026-07-27 内部类练习 成员/静态/局部内部类、匿名内部类三种使用方式、策略模式
2026-07-28 异常处理练习 异常体系、try-catch 多 catch、throws、自定义异常、业务应用(注册验证/ATM)
2026-07-29 集合框架练习 ArrayList 增删改查与底层、包装类应用、嵌套结构
2026-07-30 LinkedList 双链表练习 LinkedList(List/Deque/Queue)、性能对比、手写链表
2026-07-31 Iterator迭代器与Map集合练习 Iterator 遍历、HashMap 操作与遍历、自定义 Key、词频统计
2026-08-03 比较器排序与可变参数练习 比较器排序(Comparable/Comparator/TreeSet)、Collections.sort、可变参数
2026-08-04 Stream 流与函数式编程练习 Stream 生成/中间/终结/收集操作、方法引用、实体类收集成 Map
2026-08-06 File 文件操作练习 File 构造、创建/删除/判断/获取、listFiles 遍历
2026-08-07 IO 字节缓冲流 + 字符流 + 字符缓冲流练习 字节缓冲流、接口化复制、字符流/字符缓冲流读写、数据持久化、读取排序写回
2026-08-08 对象序列化与转换流练习 对象序列化/反序列化、Serializable、serialVersionUID、transient、转换流字符集转码
2026-08-10 线程操作与生命周期练习 线程生命周期(getState 6 种状态)、线程优先级(setPriority)、守护线程(setDaemon/JVM 退出机制)、线程协作(join/interrupt/yield)
2026-08-11 volatile 与 Lock 锁练习 volatile 可见性(程序永不退出)、volatile 不保证原子性 vs synchronized、Lock 锁基本用法(lock/unlock + finally)、Lock 进阶(tryLock / tryLock(timeout) / lockInterruptibly)、Lock 改造卖票问题(synchronized vs Lock 七维对比)