这一章竹迩想带大家来看看对象序列化;
先回到对象的模型:堆栈模型;
对象被创建出来是被放在堆栈中的,而堆栈又是属于Java运行内存时的一块区域;这意味着什么呢?
意味着只有当JVM运行时,内存这个区域才会打开装载对象,而当JVM运行结束,也就是程序运行结束,一切归零,所有数据将被赶出JVM内存,对象将不复存在;
如果你是在打游戏,那就必须有存储和恢复游戏的功能,也就是游戏中的各个对象状态需要保存;对象序列化就是为了在JVM停止运行后能够保存对象而诞生的;
什么是对象序列化?
堆上的对象 序列化的对象
这就是对象序列化;堆上的对象在创建时有状态,从而具备一定的形态;序列化得对象保存了状态值后被序列化存储,因此之后可以在堆上带回一模一样的对象;
而反序列化就是将序列化得对象恢复的过程;
对象序列化与文件IO
对象序列化就是将对象在文件中进行保存,从而在下一次读取文件时可以恢复原始对象状态;从而其实也是需要连通程序和文件的管道;
而在这跟管道上因为要传递的不是普通的流,而是对象流;就像热水管道要包装保温层一样,对象管道要包装对象处理的层;所以在连通管道外面要使用对象管道装饰一下;
对象序列化的实现
实现图中所示的过程:
具体代码过程如下:
先回到对象的模型:堆栈模型;

对象被创建出来是被放在堆栈中的,而堆栈又是属于Java运行内存时的一块区域;这意味着什么呢?
意味着只有当JVM运行时,内存这个区域才会打开装载对象,而当JVM运行结束,也就是程序运行结束,一切归零,所有数据将被赶出JVM内存,对象将不复存在;
如果你是在打游戏,那就必须有存储和恢复游戏的功能,也就是游戏中的各个对象状态需要保存;对象序列化就是为了在JVM停止运行后能够保存对象而诞生的;
什么是对象序列化?
堆上的对象 序列化的对象

这就是对象序列化;堆上的对象在创建时有状态,从而具备一定的形态;序列化得对象保存了状态值后被序列化存储,因此之后可以在堆上带回一模一样的对象;
而反序列化就是将序列化得对象恢复的过程;
对象序列化与文件IO
对象序列化就是将对象在文件中进行保存,从而在下一次读取文件时可以恢复原始对象状态;从而其实也是需要连通程序和文件的管道;

而在这跟管道上因为要传递的不是普通的流,而是对象流;就像热水管道要包装保温层一样,对象管道要包装对象处理的层;所以在连通管道外面要使用对象管道装饰一下;

对象序列化的实现
实现图中所示的过程:
- 连通程序和文件管道--FileOutputStream
- 处理对象流的包装管道--ObjectOutputStream
具体代码过程如下: