很简单的说,都是我自己理解的出说来,有问题的地方还请批评改正
序列化就是 java_对象 ---序列化---- 成字节序列
反序列化 字节序列 ---反序列化---- java对象
序列化的作用 :在保存和传递对象的过程中保持对象的完整性和可传递性把对象转变成有序的字节序列,方便在网络上传输
优点:1 二进制能够减少存储空间
2 jvm停止后,这些数据就在硬盘中,可以永久保存
3 可以在网络间传递
4 可以在进程间传递
序列化要做的事 :1 把对象实例的相关元素输出
2 递归遍历类的超类,直到没有超类
3从顶层开始输出对象实例的实例数据
4从上到下递归输出实例的数据
过程 1 必备serializable或者externalizable接口
2 jdk api中的objectInputStream
3 实现三种方法 1 对象的非临时对象进行序列化
2 调用writeObject
3 readExternal
注意事项 1 不是所有都能序列化 比如private
2 父类序列化,子类自动序列化
3 对象序列化,他的实例变量引用了其他的对象,其他的对象也要序列化
尽量显示定义servalVersionUID
因为在序列化的时候这个自动写入到序列化文件里,然后反序列化的时候对比一下是不是一个,如果不是一个会报错crash
序列化点进源码就会发现他就是一个接口,里面啥也没有,他就是在告诉jvm 你帮我做 哈哈哈哈哈哈
原文:https://www.cnblogs.com/luckbear/p/14696034.html