Serializable序列化
一、序列化是什么意思
-
序列化:将Java对象写入到输入流的过程,即转化为字节序列(二进制)的过程
-
反序列化:将字节序列恢复为Java对象的过程
二、为什么要序列化
这曾是我一度苦思冥想的问题,因为不了解其具体的现实作用,所以不能理解。于是乎去翻阅各种资料找答案,现整理如下:
-
对象存储:Java对象是运行在JVM的堆内存中的,如果JVM停止,它的生命也就戛然而止。如果此时我想要保存程序运行结束时的对象数据,那么就不可能任由它这么消失,就像玩游戏,游戏玩到一半,突然有急事处理,等回来时又要重新开始,是个人都会崩溃。于是,就需要将对象数据进行保存,但是,文件保存类型有字符串,有数字,它就是没有我们自定义的Java对象类型,如果我们想要存储Java对象类型的数据,就需要将其进行序列化,转化为字节后存储(和图片存储相似),等需要时,在进行反序列化取出。
-
远程网络传输:计算机处理器可以通过内存地址找到存储的元素,但这些地址对于不同处理器毫无意义,也就没有办法通信。Java序列化用序列化号(serialVersionUID)代替了内存地址,使得不同的处理器可以通过反序列化识别到数据,进而进行通信。
-
版本管理:程序总会不断的