java核心技术
1、1Java编程语言概述
计算机语言介绍
Java语言的前世今生
Java技术体系平台
Java核心机制与JVM运行原理
搭建 Java开发环境
JDK 的安装与配置
开发第一个Java 应用程序
Java 程序的执行原理
Java Code Style
变量的声明与使用
变量内存空间分配与原理
进制与位运算
变量的数据类型
数据类型之间的转换
变量的运算与底层运算原理

2、2Java基础语法
流程控制语句的介绍
Java 编译器执行流程
if 分支结构
switch 选择结构与相关规则
循环结构
for 循环
while 循环
do-while 循环语句
各语句性能对比与应用场景
特殊流程控制语句
方法的声明与使用
方法调用的过程分析
跨类调用方法
参数的值传递
方法的重载 Overload

3、3Java数组
static 修饰符
类的成员之代码块
静态代码块与非静态代码块
单例 (Singleton) 设计模式
final 修饰符
包 (package) 的管理与作用
DOS 命令行下编译器操作
使用 jar 命令打包应用程序
数组的创建与使用
一维数组与多维数组
数组的默认初始化与内存分析
数组的常见算法分析
操作数组的工具类 Arrays
命令行参数
可变参数

4、4面向对象编程
面向对象和面向过程的理解
类和对象的理解
类和对象的创建、使用
属性
方法
包
this
构造器
封装
JavaBean
继承
super关键字
重写
多态
Object类

5、5高级类特性
抽象类 (abstract) 实际应用举例
接口 (interface) 的应用与常见问题
Java8/Java9/Java10对接口的改进
Template Method 设计模式
Factory Method 设计模式
代理模式 (Proxy)
类的成员之内部类
匿名内部类
Java8 中匿名内部类的新特性
Enum枚举
枚举的属性与方法
接口实现枚举类
Annotation 注解
JDK 内置注解
自定义注解
元注解

6、6Java API
Wrapper 包装类
装箱与拆箱
包装类的缓存分析
字符串处理类
String 类的使用与内存原理
String 类的算法分析
StringBuffer 与 StringBuilder
字符串处理类性能分析
其他常用类
Java.lang.System类
Java.util.Date类
Java.text.SimpleDateFormat类
Java.util.Calendar类
Java.lang.Math类
Java.math.BigInteger类与Java.m

7、7异常处理
异常的原理
异常的堆栈抛出机制
异常的结构体系
受检与非受检异常
异常的处理
try-catch 示例
使用finally回收资源
throw 制造异常
异常的处理方式之throws
Java 7增强的throw 语句
方法重写与 throws
自定义异常
实战中自定义异常的应用解析
异常信息的访问
Java 程序的常见问题及解决方法

8、8集合与泛型
集合框架概述
Collection 系列集合
List 系列集合与Set系列集合
java.util.ArrayList源码与数据结构分析
java.util.LinkedList 源码分析
java.util.HashSet 内部原理
java.util.TreeSet 数据结构分析
java7 中Map 系列集合与数据结构分析
java8 中 Map 系列集合新特性对比
java.util.concurrent.ConcurrentHashMap
Iterator 与 ListIterator
Collections 工具类
集合中使用泛型
自定义泛型
通配符

9、9Java IO流
IO流结构体系
IO流原理分析
IO流的分类
IO流与文件操作
IO流的包装与链接
缓冲流
文件的复制与性能对比
对象流
对象的序列化与反序列化
控制台IO
标准输入流与标准输出流
打印流
转换流
字符编码与解码
RandomAccessFile 类

10、10Java 多线程
线程的原理
线程的创建与启动
创建线程的几种方式对比
继承 Thread 类与实现 Runnable 接口
创建线程方式对比
线程的控制
线程的调度
线程的优先级
线程的生命周期
多线程的安全问题与解决办法
线程的同步
互斥锁
线程的死锁问题
线程通信
生产者与消费者案例

11、11Java Reflection
Java 反射机制的研究与应用
反射的原理分析
JVM与类
类的加载、连接、初始化
类初始化的时机
类加载器 ClassLoader简介
类加载机制
创建并使用自定义的类加载器
开启反射的源头 Class
获取 Class 实例的四种方式
从 Class 中获取信息
Proxy 和 InvocationHandler 创建动态代理
动态代理和AOP(Aspect Orient Programming)
泛型和Class类
使用反射来获取泛型信息

12、12网络编程
网络编程基础知识
网络编程的主要问题
如何实现网络中主机的相互通讯
网络通讯要素
网络通信协议
OSI参考模型
TCP/IP参考模型(或TCP/IP协议)
数据的封装与拆封
Java.net.InetAddress 类
TCP 协议与UDP协议
基于TCP协议的网络编程
Socket 的TCP编程
基于UDP协议的网络编程
URL编程
针对HTTP协议的URLConnection

13、13Java8 新特性
Lambda 表达式
类型推断
Java8核心函数式接口
Lambda表达式的参数传递
方法引用与构造器引用
强大的 Stream API
Stream 操作的核心步骤
惰性求值与内部迭代
筛选与切片
映射与排序
查找与匹配
归约与收集
并行流与串行流
Optional 容器类

14、14Java9/Java10/Java11
模块化系统
jShell命令
接口的私有方法
语法改进:try和钻石操作符
String存储结构变更
增强的Stream API
全新的HTTP客户端API
局部变量的类型推断
集合新增创建不可变集合的方法
字符串新增一系列处理方法
Optional加强
更简化的编译运行程序
废弃Nashorn引擎
ZGC
15、15经典项目
家庭记账软件
客户管理系统
Bank管理系统
开发团队调度软件
考试管理系统软件
