详解序列化

什么是序列化?

序列化就是把生存在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();
    }

猜你喜欢

转载自www.cnblogs.com/huangqingcai/p/9554812.html