**Java面向对象编程独立导读**

欢迎进入《Java面向对象编程》课程的学习。作为Java语言的核心基石,面向对象(OOP)不仅是编程思维的转变,更是从“面向过程”走向“工程化开发”的关键一步。本课程基于Java 8标准,由浅入深地拆解类、对象、数组及String类,旨在帮助你构建扎实的底层认知,而非仅停留在语法表面。

**一、 核心理念:从对象到内存**
课程开篇即带你回归本质。在1-1至1-5节中,我们将厘清“类”与“对象”的定义及其基本使用。很多同学容易混淆二者,本模块通过生动的案例对比,让你明白类是模板,对象是实例。特别值得重点攻克的是1-4节的“对象内存分析”与1-5节的“引用传递”。Java中的内存管理(栈与堆)是初学者最大的盲区,理解对象在内存中的创建过程以及引用变量如何指向对象,是掌握后续所有高级特性的前提。只有搞懂了“引用传递”与“值传递”的本质区别,才能避免日后在代码调试中陷入无解的困境。

**二、 封装与实战:构建健壮代码**
进入第二模块,我们将深入剖析面向对象三大特性之一的“封装性”(2-1)。封装不仅是关键字的使用,更是一种保护数据、隐藏实现细节的设计思想。随后在构造方法与匿名对象(2-2)部分,你将学会如何优雅地初始化对象。2-3节的综合实战环节,要求你将前几节课的知识融会贯通,完成一个简单Java类的设计与实现,这是检验你是否真正理解“类与对象”运用的试金石。

**三、 数组进阶:从基本类型到对象引用**
数组是Java中最基础的数据结构,但其中的引用类型数组往往被忽视。3-1至3-7节系统讲解了数组的定义、静态初始化、二维数组以及对象数组。请特别注意3-5和3-7节,当数组元素是对象时,其内存布局与基本类型数组截然不同。理解“数组与方法的引用操作”,能让你在处理批量数据时更加游刃有余。

**四、 String类:高频使用的双刃剑**
最后两章聚焦于Java中使用频率最高的String类。4-1至4-5节重点辨析“字符串常量的两种实例化方式”:直接赋值(如 `String s = "abc"`)与 `new String()` 的区别。这不仅是面试题的高频考点,更直接关系到程序的内存效率。结合4-5节的字符串修改分析,你将深刻理解String对象的“不可变性”特性。5-1至5-4节则转向实用工具层面,教你如何通过Java Doc文档查阅API,掌握字符、字节与字符串之间的转换,以及字符串比较的正确姿势(切勿用 `==` 比较内容)。

**学习建议**
本课程理论密度较高,建议在学习内存分析和引用传递时,务必动手画图模拟执行过程。不要急于求成,夯实基础将为后续的集合框架、IO流及Spring框架学习扫清障碍。现在,让我们正式开始这段从入门到精通的面向对象之旅。

课程目录

1-1 [Java8面向对象编程] 面向对象简介 (17:41)
1-2 [Java8面向对象编程] 类与对象的定义 (08:27)
1-3 [Java8面向对象编程] 类与对象的基本使用 (09:42)
1-4 [Java8面向对象编程] 对象内存分析 (25:12)
1-5 [Java8面向对象编程] 引用传递初步 (17:54)
2-1 [深入分析类与对象] 封装性 (16:18)
2-2 [深入分析类与对象] 构造方法与匿名对象 (30:48)
2-3 [深入分析类与对象] 综合实战:简单Java类 (13:36)
3-1 [数组的定义及使用] 数组的基本概念 (13:21)
3-2 [数组的定义及使用] 数组的引用分析 (12:27)
3-3 [数组的定义及使用] 数组的静态初始化 (13:01)
3-4 [数组的定义及使用] 二维数组 (16:37)
3-5 [数组的定义及使用] 数组与方法的引用操作 (48:20)
3-6 [数组的定义及使用] 数组相关操作方法 (06:28)
3-7 [数组的定义及使用] 对象数组 (12:49)
4-1 [剖析String类] String类对象的两种实例化方式 (05:10)
4-2 [剖析String类] 字符串比较 (11:35)
4-3 [剖析String类] String类匿名对象 (08:55)
4-4 [剖析String类] String类对象两种实例化方式比较 (19:55)
4-5 [剖析String类] 字符串修改分析 (08:32)
5-1 [String类常用方法] Java Doc文档简介 (08:21)
5-2 [String类常用方法] 字符与字符串 (13:54)
5-3 [String类常用方法] 字节与字符串 (05:11)
5-4 [String类常用方法] 字符串比较 (08:00)
5-5 [String类常用方法] 字符串查找 (10:53)
5-6 [String类常用方法] 字符串截取 (03:17)
5-7 [String类常用方法] 字符串替换 (03:02)
5-8 [String类常用方法] 字符串拆分 (06:41)
5-9 [String类常用方法] 其它操作方法 (13:29)
6-1 [this关键字] 调用本类属性 (10:33)
6-2 [this关键字] 调用本类方法 (20:40)
7-1 [引用传递分析实例] 引用传递进阶分析 (23:46)
7-2 [引用传递分析实例] 对象比较 (15:44)
7-3 [引用传递分析实例] 引用传递实际应用 (26:06)
8-1 [static关键字] 声明static属性 (20:50)
8-2 [static关键字] 声明static方法 (13:35)
8-3 [static关键字] 分析主方法 (11:29)
8-4 [static关键字] static应用案例 (07:27)
9-1 [代码块] 普通代码块 (05:48)
9-2 [代码块] 构造代码块 (03:08)
9-3 [代码块] 静态代码块 (07:21)
10-1 [内部类] 内部类基本概念 (24:32)
10-2 [内部类] static定义内部类 (06:25)
10-3 [内部类] 方法中定义内部类 (08:53)
11-1 [综合实战:简单Java类深入] 综合实战:数据表与简单Java类映射 (20:54)
11-2 [综合实战:简单Java类深入] 综合实战:一对多映射(类型-子类型) (09:28)
11-3 [综合实战:简单Java类深入] 综合实战:双向一对多映射(用户-课程-考试成绩) (21:28)
11-4 [综合实战:简单Java类深入] 综合实战:多对多映射(管理员-角色-组-权限) (29:45)
12-1 [继承性] 继承问题的引出 (07:17)
12-2 [继承性] 继承的实现 (08:09)
12-3 [继承性] 继承的限制 (27:29)
13-1 [覆写] 方法覆写 (27:08)
13-2 [覆写] 属性覆盖 (06:02)
14-1 [综合案例:数组操作] 综合案例:数组操作(基础父类) (16:24)
14-2 [综合案例:数组操作] 综合案例:数组操作(排序子类) (05:48)
14-3 [综合案例:数组操作] 综合案例:数组操作(反转子类) (05:14)
15-1 [设计辅助概念] final关键字 (08:34)
15-2 [设计辅助概念] 对象多态性 (38:29)
16-1 [抽象类] 抽象类基本概念 (14:46)
16-2 [抽象类] 抽象类基本概念 (14:46)
16-3 [抽象类] 抽象类的相关说明 (17:26)
16-4 [抽象类] 模板设计模式 (20:08)
17-1 [接口] 接口基本定义 (27:35)
17-2 [接口] 使用接口定义标准 (16:54)
17-3 [接口] 工厂设计模式 (13:55)
17-4 [接口] 代理设计模式 (14:20)
17-5 [接口] 抽象类与接口区别 (17:17)
18-1 [Object类] Object类的基本概念 (10:22)
18-2 [Object类] toString()方法 (05:08)
18-3 [Object类] equals()方法 (05:02)
18-4 [Object类] 接收引用类型 (08:36)
19-1 [扩展概念] 匿名内部类 (08:18)
19-2 [扩展概念] 包装类实现原理分析 (12:19)
19-3 [扩展概念] 装箱与拆箱 (09:03)
19-4 [扩展概念] 数据类型转换 (15:48)
20-1 [链表的定义与使用] 链表基本概念 (22:45)
20-2 [链表的定义与使用] 链表基本实现 (19:45)
20-3 [链表的定义与使用] 可用链表 —— 程序结构设计 (06:55)
20-4 [链表的定义与使用] 可用链表 —— 增加数据 (04:21)
20-5 [链表的定义与使用] 可用链表 —— 取得链表长度 (04:51)
20-6 [链表的定义与使用] 可用链表 —— 判断空链表 (02:50)
20-7 [链表的定义与使用] 可用链表 —— 数据内容查询 (10:03)
20-8 [链表的定义与使用] 可用链表 —— 根据索引取得数据 (11:24)
20-9 [链表的定义与使用] 可用链表 —— 修改链表数据 (06:21)
20-10 [链表的定义与使用] 可用链表 —— 删除链表数据 (12:21)
20-11 [链表的定义与使用] 可用链表 —— 清空链表数据 (02:47)
20-12 [链表的定义与使用] 可用链表 —— 对象数组转换 (09:13)
20-13 [链表的定义与使用] 综合实战:图书大厦 (24:11)
21-1 [包的定义及使用] 包的定义 (10:50)
21-2 [包的定义及使用] 包的导入 (20:26)
21-3 [包的定义及使用] 系统常用包 (14:40)
21-4 [包的定义及使用] 生成jar文件 (12:21)
22-1 [访问控制权限] 访问控制权限 (09:15)
22-2 [访问控制权限] Java命名规范 (02:21)
23-1 [单例设计模式] 单例设计模式分析 (21:17)
23-2 [单例设计模式] 多例设计模式分析 (04:43)
24-1 [异常的捕获及处理] 认识异常 (06:24)
24-2 [异常的捕获及处理] 处理异常 (06:29)
24-3 [异常的捕获及处理] 处理多个异常 (06:44)
24-4 [异常的捕获及处理] 异常处理流程 (22:24)
24-5 [异常的捕获及处理] throws关键字 (08:58)
24-6 [异常的捕获及处理] 异常处理模型 (05:49)
24-7 [异常的捕获及处理] 异常处理模型 (10:33)
24-8 [异常的捕获及处理] RuntimeException类 (08:04)
24-9 [异常的捕获及处理] 断言 (05:39)
24-10 [异常的捕获及处理] 自定义异常类 (05:37)
25-1 [类图描述] 类图 (18:34)
25-2 [类图描述] 时序图 (06:45)
25-3 [类图描述] 用例图 (06:45)
26-1 [Eclipse开发工具] Eclipse简介 (21:56)
26-2 [Eclipse开发工具] 使用JDT开发Java程序 (33:47)
26-3 [Eclipse开发工具] junit测试工具 (09:51)
27-1 [Java5新特性] 可变参数 (10:31)
27-2 [Java5新特性] foreach循环 (06:04)
27-3 [Java5新特性] 静态导入 (06:26)
28-1 [泛型] 泛型问题引出 (24:51)
28-2 [泛型] 通配符 (16:28)
28-3 [泛型] 泛型接口 (05:00)
28-4 [泛型] 泛型方法 (04:29)
29-1 [Annotation] 多例设计模式与枚举 (09:45)
29-2 [Annotation] Enum与enum (08:30)
29-3 [Annotation] 枚举结构定义 (09:32)
29-4 [Annotation] 枚举应用 (03:57)
30-1 [Java8新特性] Annotation简介 (10:59)
30-2 [Java8新特性] 准确覆写 (04:02)
30-3 [Java8新特性] 过期声明 (03:25)
30-4 [Java8新特性] 压制警告 (03:44)
31-1 [Java8新特性] 接口定义增强 (12:37)
31-2 [Java8新特性] Lamda表达式 (17:50)
31-3 [Java8新特性] 方法引用 (17:53)
31-4 [Java8新特性] 内建函数式接口 (15:58)