基
础
篇
⾯
向
对
象
什么
是
⾯
向
对
象
⾯
向
过
程
⾯
向
对
象
⾯
向
对
象
的
三
⼤基
本
特
征
封
装
继
承
多
态
⾯
向
对
象
的
五
⼤基
本
原
则
单
⼀
职
责
原
则
开
放
封
闭
原
则
⾥
⽒
替
换
原
则
接
⼝
隔
离
原
则
依
赖
倒
置
原
则
封
装
、
继
承
、
多
态
什么
是
多
态
⽅
法
重
写
与
重
载
Java
的
继
承
与
实
现
多
继
承
菱
形
继
承
问题
组
合
与
继
承
什么
是
组
合
组
合
与
继
承
的
区
别
和
联
系
优
缺
点
对
⽐
如
何
选
择
构
造
函
数
默
认
构
造
函
数
变
量
类
变
量
成
员变
量
局
部
变
量
作
⽤
域
成
员变
量
⽅
法
Java
对
象
Object
类
Java Bean
getter/setter
为什么使
⽤
success
⽽
不
是
isSuccess
equals
和
hashCode
equals
的
多
种
实
现
equals
和
hashCode
的
关
系
对
象
的
clone
深
拷
⻉
、
浅
拷
⻉
如
何
实
现
对
象
的
深
拷
⻉
平
台
⽆
关
性
Java
如
何
实
现
的
平
台
⽆
关
JVM
还
⽀
持
哪
些
语⾔
Kotlin
Groovy
JRuby
Jython
Scala
值
传
递
实
参
与
形
参
求
值
策
略
值
传
递
引
⽤
传
递
共
享
对
象
传
递
为什么
说
Java
中
只
有
值
传
递
Java
基
础知
识
基
本
数据
类
型
8
种
基
本
数据
类
型
整
型
浮
点
型
布尔
型
字
符
型
取
值
范
围
byte
short
int
long
浮
点
型
什么
是
浮
点
型
单
精
度
和双
精
度
为什么
不
能
⽤
浮
点
型
表
示
⾦
额
⾃
动
拆
装
箱
包
装
类
型
基
本
类
型
⾃
动
拆
装
箱
整
型
的
缓
存
机
制
基
本
类
型
和
包
装
类
怎
么
选
Java
中
负
数
的
绝
对
值
不⼀
定
是
正
数
String
字
符
串
的
不
可变
性
JDK 6
和
JDK 7
中
substring
的
原
理
及区
别
replaceFirst
、
replaceAll
、
replace
区
别
String
对
“+”
的
重
载
字
符
串
拼
接
的
⼏
种
⽅
式
和区
别
StringJoiner
的
使
⽤
和原
理
从
String
中
移
除
空
⽩
字
符
串
的
多
种
⽅
式
String.valueOf
和
Integer.toString
的
区
别
switch
对
String
的
⽀
持
字
符
串
池
常
量
池
Class
常
量
池
运
⾏
时
常
量
池
字
⾯
量
什么
时
候
存
⼊
字
符
串
池
intern
的
原
理
与
⽤
法
String
的
⻓
度
限
制
关
键
字
transient
instanceof
volatile
synchronized
final
static
const
集
合
类
常
⽤
集
合
类
的
使
⽤
Set
和
List
区
别
?
Set
如
何保
证
元
素
不
重
复
?
Collection
和
Collections
区
别
Enumeration
和
Iterator
区
别
集
合
的
遍
历
ArrayList
和
LinkedList
和
Vector
的
区
别
SynchronizedList
和
Vector
的
区
别
HashSet
、
LinkedHashSet
和
TreeSet
的
区
别
HashMap
、
HashTable
、
ConcurrentHashMap
区
别
不
要
使
⽤
双
括
号
法
初
始
化
集
合
同
步
容
器
的
所
有
操
作
⼀
定
是
线
程
安
全
的
吗
?
HashMap
的
数据
结
构
与
扩
容
机
制
HashMap
中
size
和
capacity
的
区
别
HashMap
中
loadFactor
和
thrshold
为什么
建
议
初
始
化
集
合
时
指
定容
量
?
HashMap
的
初
始
容
量
设
置
成
多
少
合
适
?
HashMap
的
默
认
容
量
为什么
是
16
HashMap
的
默
认
负
载
因
⼦
为什么
是
0.75
HashMap
的
线
程
安
全
问题
为什么
不
能
在
foreach
循
环
⾥
对
集
合
中
的
元
素
进
⾏
remove/add
操
作
如
何
在
遍
历
的
同
时
删
除
ArrayList
中
的
元
素
fail-fast
和
fail-safe
Java 8
中
的
Map
为什么
引
⼊
了
红
⿊
树
为什么
将
HashMap
转
红
⿊
树
的
阈
值
设
置
为
8
Java 8
中
stream
相
关
⽤
法
Java
中
的
并
发
容
器
Linked VS Array
阻
塞
队
列
与
⾮阻
塞
队
列
Blocking VS Transfer
Copy-On-Write
Skip List
枚
举
枚
举
的
⽤
法
枚
举
是
如
何
实
现
的
Enum
类
Java
枚
举
如
何
⽐
较
switch
对
枚
举
的
⽀
持
为什么
说
枚
举
是
实
现
单
例
最
好
的
⽅
式
枚
举
的
序
列化
如
何
实
现
枚
举
的
线
程
安
全
性
问题
为什么
接
⼝
返
回
值
不
能
使
⽤
枚
举
类
型
IO
字
符
流
、
字
节
流
输
⼊
流
、
输
出
流
同
步
、
异
步
、
阻
塞
、
⾮阻
塞
Linux 5
种
IO
模
型
BIO
、
NIO
和
AIO
的
区
别
三
种
IO
的
⽤
法
与
原
理
netty
反
射
反
射
的
概
念
与
作
⽤
Class
类
java.long.reflect.*
反
射
是
如
何
破
坏
单
例
的
利
⽤
反
射
与
⼯
⼚
模
式
实
现
Spring IoC
动
态
代
理
静
态
代
理
、
动
态
代
理
动
态
代
理
和反
射
的
关
系
动
态
代
理
的
⼏
种
实
现
⽅
式
AOP
序
列化
什么
是
序
列化
与
反
序
列化
为什么
序
列化
序
列化
底
层
原
理
什么
是
transient
为什么
不
能
随
便
更
改
serialVersionUID
序
列化
如
何
破
坏
单
例
模
式
使
⽤
序
列化
实
现
深
拷
⻉
protobuf
为什么
说
序
列化
并
不
安
全
Apache-Cmmons-Collections
的
反
序
列化
漏
洞
fastjson
的
反
序
列化
漏
洞
JavaBean
属
性
名
对
序
列化
的
影
响
注
解
注
解
及
注
解
的
使
⽤
元
注
解
⾃
定
义
注
解
注
解
的
继
承
与
组
合
Java
中
常
⽤
注
解
使
⽤
注
解
与
反
射
的
结
合
⽇
常开
发
中
的
常
⽤
注
解
为什么
不
要
过
度
依
赖
注
解
JMS
什么
是
Java
消
息
服
务
JMS
消
息
传
送
模
型
JMX
java.lang.management.*
javax.management.*
泛
型
泛
型
与
继
承
类
型
擦
除
泛
型
各
种
⽤
法
泛
型
中
K T V E
?
object
等
的
含
义
在
泛
型
为
String
的
List
中
存
放
Integer
对
象
泛
型
与
桥
接⽅
法
限
定
通配
符
和
⾮限
定
通配
符
上下
界
限
定
符
extends
和
super
泛
型
的
PECS
原
则
List
和原
始
类
型
List
之
间
的
区
别
?
List<?>
和
List
之
间
的
区
别
是
什么
?
泛
型
会
带
来
哪
些
问题
异常
异常
类
型
正
确
处
理
异常
⾃
定
义
异常
Error
和
Exception
异常
链
try-with-resources
finally
和
return
的
执
⾏
顺
序
正
则
表
达
式
java.lang.util.regex.*
时
间
处
理
时
区
冬
令
时
和
夏
令
时
时
间
戳
Java
中
时
间
API
格林
威
治
时
间
CET,UTC,GMT,CST
⼏
种
常
⻅
时
间
的
含
义
和
关
系
SimpleDateFormat
的
线
程
安
全
性
问题
Java 8
中
的
时
间
处
理
如
何
在
东
⼋
区
的
计
算
机
上
获
取
美
国
时
间
为什么
⽇
期格
式
化
时
使
⽤
y
表
示
年
,
⽽
不
能
⽤
Y
编
码
⽅
式
ASCII
和
Unicode
有
了
Unicode
为
啥
还
需
要
UTF-8
有
了
UTF-8
为什么
还
需
要
GBK
GBK
、
GB2312
、
GB18030
之
间
的
区
别
UTF8
、
UTF16
、
UTF32
区
别
URL
编
解
码
、
Big Endian
和
Little Endian
如
何
解
决
乱
码
问题
API&SPI
API
SPI
如
何
定
义
SPI
SPI
的
实
现
原
理
API
与
SPI
的
关
系
和区
别
BigDecimal
BigDecimal
与
精
确
计
数
为什么
不
能
直
接
使
⽤
double
创
建
⼀个
BigDecimal
为什么
不
能
使
⽤
BigDecimal
的
equals
⽅
法
⽐
较
⼤
⼩
常
⽤
的
Java
⼯
具
库
Apache Commons
BeanUtils
⼯
具
MapStruct
Guava
Lombok
单
元
测
试
junit
mock
mockito
内
存
数据
库
h2
语
法
糖
Java
中
语
法
糖
原
理
解语
法
糖
语
法
糖
switch
⽀
持
String
与
枚
举
泛
型
⾃
动
装
箱
与
拆
箱
⽅
法
变
⻓
参
数
枚
举
内
部
类
条
件
编
译
断
⾔
数
值
字
⾯
量
for-each
try-with-resource
Lambda
表
达
式
阅
读
源
代
码
String
Integer
Long
Enum
BigDecimal
ThreadLocal
ClassLoader & URLClassLoader
ArrayList & LinkedList
HashMap & LinkedHashMap & TreeMap &
CouncurrentHashMap
HashSet & LinkedHashSet & TreeSet
Java
新
版
本
特
性
Java 8
函
数
式
编
程
接
⼝
的
默
认
⽅
法
Stream
Java 9
模
块
化
与
Jigsaw
Jshell
Reactive Streams
Java 10
局
部
变
量
类
型
推断
G1
的
并
⾏
Full GC
ThreadLocal
握
⼿
机
制
Java 11
ZGC
Epsilon
增
强
var
Java 12 Switch
表
达
式
Java 13
Text Blocks
Dynamic CDS Archives
Java 14
Java
打
包
⼯
具
更有
价
值
的
NullPointerException
record
类
型
Java 15
封
闭
类
Java 16 instanceof
模
式
匹
配
Java 17 switch
模
式
匹
配
评论0
最新资源