什么是序列化?
序列化就是把生存在java堆上(内存)的对象存储到硬盘上
为什么要使用序列化?
1.因为内存是没有记忆的,每次重启电脑,或发生系统断电时,内存上的对象就会消失,而硬盘是有记忆的,它可以永久的存储数据,不怕断电。
2.序列化的过程是对象转化为二进制字节码,数据可以以二进制形式在网络上传输
如何序列化?
java中通过实现serializable接口,jvm会给实现了这个接口的class特殊对待,给他分配一个serialVersionUID属性,并自定分配一个序列号,标识该对象,代表唯一,
然后通过二进制字节流把对象存储在硬盘上。
如何放序列化?
反序列化的过程:先在硬盘上找到该对象,然后把它转化为二进制字节码传到内存上完成反序列化
注意点?
序列化过程一旦确定了一个序列号,序列化完成后,B端的新增一个字段,反序列化回来的内容没有新增加的字段,A端新增一个字段,重新序列化,反序列化回来的内容识别不到新增的字段!
//因为User01实现了Serializable,JVM会给特殊对待,给它分配一个属性
//serialVersionUID = -1233596691741428589,
String name;
//不让系统分配,我们自己写
static final long serialVersionUID=2222222l;
User01(String name){
this.name=name;
}
public String toString(){
return "User01["+name+"]";
}
/* * 反序列化 */ import java.io.*; public class Test88 { public static void main(String[] args) throws Exception{ ObjectInputStream ois =new ObjectInputStream(new FileInputStream("E:/user")); System.out.println(ois.readObject()); //User01[qingcai] ois.close(); }