java 序列化
1. 什么是序列化、反序列化
序列化:把对象转换成可传输的字节序列的过程
反序列化: 把字节序列还原成对象的过程
2. 为什么要序列化 (类比把房子拆成一个个砖,并保留原有结构图)
序列化的最终目的是 对象的跨平台存储和 进行网络传输,而进行的跨平台存储和 进行网络传输方式是 IO流(支持 字节数组),但我们只是单纯的把对象转换成字节数组还不行,因为没有规则的字节数组我们是无法还原的,恰好 序列化就提供了这样一种规则。
3. 如何实现序列化
1. 实现 serializable接口
2. 实现 Externalserializable方法
4. 为什么static属性不能序列化
因为序列化保存的是对象的状态,而静态变量属于类的状态。
5. 什么是 serialVersionUID ?如果你不定义这个, 会发生什么?
所有实现序列化的对象都必须要有个版本号 ,用于对象的版本控制,我们的对象通常需要根据业务的需求变化进行 修改一些属性,在做出修改后通常就根据版本号告诉反序列化对象。