本套Java学习资料汇总,自2016年3月起持续积累与维护,以Markdown格式开源,内容覆盖Java基础、面向对象、数据结构、IO流、并发编程、虚拟机等核心知识体系。除了系统化的知识点整理,日常开发中的常见Bug汇总与面试题也一并收录,方便开发者系统提升。下面直接进入各章节的核心内容介绍。
目录介绍
01.Java基础[30篇] 02.面向对象[15篇] 03.数据结构[27篇] 04.IO流知识[11篇] 05.线程进程[9篇] 06.虚拟机[5篇] 07.类的加载[7篇] 08.反射原理[12篇] 09.Java并发[27篇] 10.Java异常[11篇] 11.枚举与注解[1篇] 12.设计模式[8篇] 13.Java深入[2篇]
好消息
01.Java基础
首先是Java关键字汇总,覆盖常见关键字及其重要说明,并且保持持续更新。

Java基础知识部分,涵盖基础知识点总结、标识符规则、进制与字符编码、各类运算符的使用、方法定义、内存分配机制以及栈和堆的详细讲解。
基本数据类型:详细说明基本类型的种类、类型转换方式、字面值类型以及表达式中的自动类型提升规则。
常见的API方法:介绍常用的API用法及注意事项。
int和Integer深入分析:主要涉及Integer的值缓存原理、自动装箱与拆箱机制、int类型线程安全验证方法、原始类型与引用类型的局限性分析,以及原始类型线程安全问题探讨。
基础类型缓存池概念:清晰区分new Integer(123)与Integer.valueOf(123),梳理基本类型对应的缓冲池。
Java运算符:包含算术运算符、位运算符、关系运算符、逻辑运算符等各类运算符的用法说明。
访问权限控制:介绍访问控制符的种类,以及类访问控制符与类成员访问控制符的具体使用方法。
static深入理解:分析static变量的存储位置、使用静态变量可能引发的潜在问题、静态变量的生命周期与销毁时机,以及静态引用对象的回收机制。
final深入理解:对final关键字进行概述,并与finally、finalize进行对比分析。
基本数据类型存储位置:区分局部变量、成员变量、静态变量在内存中的存储位置。
泛型基础:泛型概述、引入泛型的目的、泛型初步探索、泛型的格式及使用优势。
泛型的使用:涵盖泛型类、泛型接口的使用方法,通配符高级用法,以及泛型只能使用引用类型的限制说明。
泛型可读性:编译器的类型检查机制,可读性与灵活性权衡,以及泛型方法与泛型类的对比分析。
泛型擦除:讲解泛型擦除的概念,并通过具体案例加以说明。
泛型与反射:通过反射机制获取泛型的实际类型参数。
泛型的限制:不能实例化类型参数,以及对静态成员、泛型数组、泛型异常的限制说明。
String类深入理解:String的创建机理、StringBuffer与StringBuilder的区别、String类的高频考点分析,以及String不可变特性的好处。
switch对整型支持:Switch支持的类型说明,包括对整型、字符串、字符型的支持方式。
02.面向对象
面向对象基础:面向对象的核心思想(思想与特征)、类与对象及其应用、对象的内存图、成员变量与局部变量的区别等。
Java封装:封装的定义、封装的好处、设计原则及具体案例展示。
Java继承:继承的概述、格式、优势与劣势、注意事项、成员变量的关系分析,以及不支持多继承带来的影响。
Java多态:多态的定义、实现条件、实现方式、优势与劣势。
Java接口:接口的概念与特点、Marker Interface、Java 8接口的变化、接口的加载方式。
Java抽象类:为何需要抽象类、抽象类的特点、是否可以创建实例、设计注意事项,以及抽象类名作为形参的使用。
抽象类和接口:从概念、语法差异、编程角度差异等方面进行理解,并梳理二者的区别。
Java内部类:内部类的分类、概述与访问特点、内部类与外部类的关联、匿名内部类与成员内部类的介绍,以及内部类调用的外部变量为何必须用final修饰。
形参和实参:形参与实参的定义,类名、抽象类名、接口名作为形式参数的用法。
Java构造方法:构造方法的概述、作用、注意事项、案例演示及加载机制。
方法重载和覆盖:方法重写与方法重载的定义,父类的静态方法能否被子类重写等问题的探讨。
包和权限修饰符:import关键字概述与使用,四种权限修饰符的测试,类及其组成所使用的常见修饰符。
代码块深入理解:待完善。
Java绑定机制:绑定的定义,静态绑定与动态绑定的区别,动态绑定的编译原理与运行原理,多态的划分情况。
值传递和引用传递:基本类型与引用类型的区别,值传递与引用传递的定义,通过实际案例进行分析。
面向对象原则:三大特点、六大原则、实践案例分析。
03.数据结构
常见数据结构:数组、集合、栈、堆、链表、图、队列、树等开发中常用的数据类型。
集合基础介绍:集合的概括与总结、遍历方法、迭代器原理、List集合的选择。
List集合:ArrayList、Vector、LinkedList等集合的特点与区别,ArrayList扩容消耗,List排序实现,System.arraycopy()与Arrays.copyOf()的区别与联系,list集合读写机制与效率,以及ArrayList核心源代码分析。
Set集合:HashSet、LinkedHashSet、TreeSet等集合的特点与区别。
Map集合:HashMap、LinkedHashMap、TreeMap等集合的案例分享与基础内容。
ArrayList1:ArrayList由来介绍、特点、使用方法、结构图与类声明。
ArrayList2:内部结构、构造方法、add(E e)方法、set和get函数、remove(Object o)方法、扩容消耗分析。
ArrayList3:序列化、clone方法、System.arraycopy()与Arrays.copyOf()对比、Fail-Fast机制、排序实现。
LinkedList1:简介、内部结构分析、类声明、常用方法、list效率比较。
LinkedList2:构造方法与成员变量、add方法、get方法、indexOf方法、remove方法。
HashMap1:简单使用、数据查找、遍历、特点、底层实现。
HashMap2:内部结构、构造函数、put(K key, V value)方法、get(Object key)方法、resize扩容机制、Hash函数实现。
HashMap3:容量与装载因子、HashTable与HashMap比较、hashCode与equal方法、Key为何需要不可变、HashMap扩容原因、table下标。
HashMap4:线程问题、效率测试、性能分析。
TreeMap1:特点、使用场景、简单使用、案例训练。
TreeMap2:构造函数与成员变量、put插入函数源码、get获取函数源码、如何保证有序性。
ConcurrentHashMap1:HashMap使用的弊端、ConcurrentHashMap底层知识点。
ConcurrentHashMap2:内部结构、table初始化initTable()、put插入数据操作。
LinkedHashMap1:使用方式、特点、为何需要LinkedHashMap、节点类说明。
LinkedHashMap2:成员变量分析、构造函数分析、put插入元素、get访问元素、移除元素源码分析。
HashSet:特点、如何去重、源码分析。
LinkedHashSet:特点、源码分析。
TreeSet:特点说明、案例、原理、源码分析。
CopyOnWriteArrayList:CopyOnWriteArrayList的概念、与ArrayList的区别、读写分离机制。
04.IO流知识
IO流基础介绍:IO流概述及其前奏、整体学习知识体系、IO流的概念、输入流与输出流。
IO流字符与字节:字节与字符的定义、unicode编码、如何获取字节、字节与字符的区别、String中的编解码问题。
IO流之File类:File类介绍、构造函数、创建与删除方法、判断方法、获取方法。
IO流体系图:按照流向划分图、按操作方式分类结构图、InputStream字节输入流、OutputStream字节输出流、Reader字符输入流、Writer字符输出流。
IO字节流案例:字节流的概念,字节流复制文本文件与MP3文件,四种方式复制MP3的效率比较。
IO字符流案例:字符流OutputStreamWriter与InputStreamWriter、读写方式、复制文本文件、复制单级文件夹、复制指定目录下指定后缀名的文件并修改名称。
Buffer高效字节流:Buffer缓冲流的概念、字节缓冲流BufferedOutputStream与BufferedInputStream。
Buffer高效字符流:高效字符流的概念、字符缓冲流的特殊功能、高效字符流复制文本文件、集合数据存储到文本文件、文本数据存储到集合中、随机获取文本中的姓名。
Java深拷贝和浅拷贝:如何实现对象克隆?克隆的方式有哪些?深克隆与浅克隆的区别?浅拷贝是否会创建新对象?对于基本类型拷贝的是什么?如何实现浅拷贝?浅拷贝前后对象地址值是否相同?
RandomAccessFile:简介、构造函数、使用方式。
05.线程进程
线程基础知识:线程的定义、多线程的意义、并行与并发的区别、JVM启动线程的方式。
进程基础知识:进程的定义、多进程的意义、进程状态有哪些、状态转换、进程通信、死锁、调度算法。
线程和进程:概念区别、调度区别、并发性区别、资源对比、系统开销对比。
Thread创建:继承Thread类创建线程、实现Runnable接口、通过Callable和Future创建线程、三种创建方式的区别。
Thread控制:线程执行流程、调度、sleep休眠线程、join加入线程、yield礼让线程、setDaemon守护线程、stop中断线程、start开启线程。
Thread问题:start和run的区别、为何不能重复start、wait和sleep方法的区别、run方法的作用、Runnable和Callable的比较。
Thread关闭:结束线程的几种方法——使用退出标志终止线程、使用interrupt()方法终止线程、使用stop方法终止线程。
线程通信方式:线程间通信的两种方式、wait()/notify()方法、notify()方法使用注意事项、Condition实现等待/通知。
生产者消费者:生产者消费者模型的场景、一生产与一消费案例、多生产与多消费案例、关键问题与解决方法。
06.虚拟机
Java内存分配机制:JVM内存管理图、内存分配策略、内存泄漏简单介绍。
Java垃圾回收机制:GC回收机制、GC过程与对象引用类型的关系、检测垃圾的算法、处理垃圾的算法、分代收集算法、对象生命周期划分。
Java对象的访问定位方式:通过句柄访问、通过直接指针访问、两种方式的区别与优势。
Java对象销毁分析:JVM内存分配与回收、判断对象是否死亡、不可达对象的处理、废弃常量的判断、无用类的判断、GC回收算法详解。
Java内存分配案例:JVM加载类过程、构造方法赋值、通过对象调用方法。
07.类的加载
Java类加载器:类加载器分类。
类的加载机制:Java对象的创建过程、Java内存区域、对象的访问定位方式、对象销毁分析、类加载过程。类信息、常量、变量、方法分别存放在内存的哪些区域?本地方法栈与Java虚拟机栈的区别?本地方法栈何时造成OOM?对象访问定位方式的区别?为什么指针效率更高?
类的生命周期:类的生命周期的定义,类加载的过程包括加载、验证、准备、解析、初始化五个阶段,每个阶段的具体工作。
双亲委派机制:双亲委派机制的定义、工作流程、不同优先级的原因、双亲委派模型的代码实现。
Java对象的创建:对象创建需要满足的条件。
类执行测试:类在加载过程中的执行流程。
08.反射原理
反射机制介绍:Java反射机制的定义、应用场景、Class与.class文档、反射之动态交互、使用反射的初衷。
反射查看类信息:获得Class对象的方式(Class.forName()、类.class、对象.getClass())。
获取对象信息:获取class对象的信息,包括变量、方法、构造函数,以及获取案例。
反射实际使用:反射生成类实例对象、调用类的方法、访问成员变量值。
利用Class建立对象:建立实例对象的操作。
操作成员方法:反射调用公有方法与私有方法。
泛型和反射:泛型与Class类的结合,使用反射获取泛型信息及案例。
反射攻击单例:如何防止反射和序列化攻击单例。
09.Java并发
多线程并发案例:继承Thread类实现卖电影票、实现Runnable接口卖电影票、同票和负数票的原因分析、线程安全问题原因分析、同步代码块解决线程安全。
多线程三要素:线程安全的定义、线程安全级别、多线程三要素(原子性、可见性、有序性)的理解。
处理多线程并发:处理并发的方式,如何保证原子性、可见性、有序性,项目中锁和synchronized使用较多的原因,volatile保证可见性的原理。
Synchronize1:用法、同步代码块synchronized (this)、同步方法synchronized void test、作用于方法与静态方法的区别、效率问题。
Synchronize2:简单理解Synchronize锁机制,同步方法和代码块的实现原理。
ReentrantLock:定义、使用方法、锁机制测试、使用场景。
Synchronize和ReentrantLock区别:区别分析、编译时锁机制实现、测试案例、公平锁与非公平锁的区别。
deadLock 3种类型:死锁产生的条件、静态锁顺序死锁、动态锁顺序死锁、协作对象之间发生的死锁。
deadLock详谈:导致死锁的原因、满足条件、诊断步骤。
volatile介绍:轻量级锁、测试案例、实现原理、happens-before关系、内存语义、应用场景。
CAS深度解析:简单介绍、操作案例分析、存在的问题。
线程池基础介绍:线程池的优势、ThreadPoolExecutor参数、执行流程、使用技巧。
10.Java异常
Exception 和 Error:异常体系结构图、Throwable类常用方法、异常处理关键字。
异常之Error:Error的定义、常见Error有哪些。
异常之Exception:Exception的定义、常见Exception、编译期异常与运行期异常的区别。
异常处理机制:抛出异常的概念、先抛出后捕获的原则、异常处理的两种方式、注意事项、如何选择处理方法。
jvm处理异常:待更新。
try...catch异常:try...catch处理异常的方式、try-catch-finally规则、使用建议、catch执行要点、finally是否一定会执行、执行顺序、多条catch子句的用法。
throws抛出异常:throws用法、throw用法、二者区别。
异常之链式异常:未捕获的异常、链式异常。
finally-return深入:验证finally执行情况、finally中return与try中return的区别、try块里的return是否一定执行。
自定义异常:自定义异常的实现方法。
处理异常一些建议:尽量捕获原始异常、不要打印堆栈后再抛出异常、勿用异常处理机制代替判断。
11.枚举与注解
(原文此处无详细内容,保留章节标题。)
12.设计模式
01.生产者与消费者模式
02.单例模式
03.订阅者模式
04.适配器模式
05.策略者模式
13.Java深入
01.四种引用比较与源码分析:强引用、软引用、弱引用、虚引用的使用场景与区别,软引用SoftReference源码分析,弱引用WeakReference源码分析,虚引用PhantomReference源码分析。
02.Java内存分配机制及内存泄漏:GC进行内存管理思维导图、JVM内存分配策略、GC简单介绍、内存泄漏影响、垃圾回收思路及方法。
03.Hash和HashCode深入理解:Hash定义、使用场景、HashCode的概念、为何要重写HashCode、能否直接用hashcode判断两个对象相等、Hash表的概念、Hash中的算法应用、Hash在Java中的应用场景。
其他介绍
01.关于博客汇总链接
1.技术博客汇总 2.开源项目汇总 3.生活博客汇总 4.喜马拉雅音频汇总 5.其他汇总
