定义
- 序列化:把Java对象转换为字节序列的过程
- 反序列化:把字节序列恢复为Java对象的过程。
主要作用
- 持久化对象:把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中。
- 网络传输对象:在网络上传送对象的字节序列。
实现
- 实现Serializable 接口
- 继承 Externalizable 接口
为什么要实现Serializable 接口?
在Java中实现了Serializable接口后, JVM会在底层帮我们实现序列化和反序列化, 如果我们不实现Serializable接口, 那自己写一套序列化和反序列化代码也行
一套规范
序列化版本serialVersionUID
一个对象数据,在反序列化过程中,如果序列化串中的serialVersionUID与当前对象值不同,则反序列化失败,否则成功。
如果serialVersionUID没有显式生成,系统就会自动生成一个
transient
该关键词修饰的属性不会被序列化
static属性为什么不会被序列化?
因为static修饰的属性是属于类,而非对象。