Java序列化
一、简介
1、序列化:Java序列化是指把Java对象转换为字节序列的过程;
2、反序列化:而Java反序列化是指把字节序列恢复为Java对象的过程;
二、场景
1、进程间通信文本、图片、音频、视频等数据的传输,使用二进制序列化发送方将Java对象转化为字节序列,接收方将字节序列恢复成Java对象。
三、优点
1、数据的持久化,通过序列化可以把数据永久地把数据以文件的形式保存到硬盘上
2、利用序列化实现远程通信,在网络上传送对象的字节序列
四、实现
1、JDK类库中序列化API:
java.io.ObjectOutputStream:表示对象输出流,writeObject(Object obj)方法可以对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中
java.io.ObjectInputStream:表示对象输入流,readObject()方法源输入流中读取字节序列,再把它们反序列化成为一个对象,并将其返回
2、实现序列话接口
1、Serializable :序列化:调用writeObject(ObjectOutputStream
out)方法
反序列化:调用readObject(ObjectInputStream in)方法
2、Externalnalizable:序列化:实现writeExternal(ObjectOutput
out)方法
反序列化:实现readExternal(ObjectInput in)方法
五、实例
import java.io.*;
public class book implements Externalizable {
private String name;
private String desc;
private float price;
public book() {
}
public book(String name, String desc, float price) {
this.name = name;
this.desc = desc;
this.price = price;
}
@Override
public void writeExternal(ObjectOutput out) throws IOException {
out.writeObject(name);
out.writeObject(desc);
out.writeFloat(price);
}
@Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
this.name = (String) in.readObject();
this.desc = (String) in.readObject();
this.price = in.readFloat();
}
}
9767

被折叠的 条评论
为什么被折叠?



