序列化:
序列化就是在保存数据时,保存数据的值和数据类型
序列化就是将对象的状态(对象的属性)存储到特定存储介质中的过程,也就是将对象状态转换为可保持或可传输格式的过程。将对象放到文本文件中。
序列化的核心有两个:(1)保存对象状态 (2)对象状态可存储
序列化后的对象保存的是二进制状态,实现了平台无关性。即可以将在Windows操作系统中实现序列化的一个对象,传输到UNIX操作系统的机器上,再通过反序列化后得到相同对象,而无需担心数据因平台问题显示异常。
需要让某个对象支持序列化机制,则必须让其类是可序列化的,为了让某个类是可序列的,该类必须实现如下两个接口之一:
Serializable :
只要对象的类实现了该接口,就可以被序列化。
只是一个标记接口,此接口没有任何方法。用于表示一个类可以被序列化。序列化是将对象转为字节流的过程,以方便可以将对象保存到文件、传递到网络上,或在不同Java应用程序之间进行通信
Externalizable:该接口有方法需要实现,因此一般实现上面的Serializable接口
序列化实现:
ObjectOutputStream类
构造方法:
public ObjectOutputStream(OutputStream out)
:创建一个写入指定
OutputStream 的
ObjectOutputStream
。
使用方法:
writeObject(Object obj)
: 将指定的对象写入ObjectOutputStream。
反序列化:
反序列化就是在恢复数据时,回复数据的值和数据类型
反序列化则是从特定存储介质中读取数据并重新构建成对象的过程。从文本文件获取对象信息。
反序列化实现:
ObjectInputStraem类
ObjectInputStream类也是一个包装流,不能单独使用,需要结合原始的字节输入流使用。
构造方法:
public ObjectInputStream(InputStream in)
: 创建一个写入指定
InputStream
的
ObjectInputStream
对象。
使用方法:
Object readObject()
: 从 ObjectInputStream 读取对象。