1》序列化分为两大部分:
把Java对象转换为字节序列的过程称为对象的序列化。
把字节序列恢复为Java对象的过程称为对象的反序列化。
2》序列化的目的
1、以某种存储形式使自定义对象持久化;
2、将对象从一个地方传递到另一个地方。
3、使程序更具维护性
3》具体步骤:
序列化:通过ObjectOutputStream创建一个对象输出流,通过对象输出流的writeObject方法写入流对象.
反序列化 :创建一个对象输入流ObjectInputStream,通过对象输入流的readObject()方法读取对象。
代码示例如下:
/**
* 保存一个序列化的对象
*
*/
public void writeObject(String filename,Object o){
ObjectOutputStream writer = null;
try {
writer = new ObjectOutputStream(new FileOutputStream(filename));
writer.writeObject(o);
writer.flush();
writer.close();
} catch (FileNotFoundException e) { // 编译时异常
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 读一个序列化的对象
*
*/
public Object readObject(String filename){
ObjectInputStream reader = null;
try {
reader = new ObjectInputStream(new FileInputStream(filename));
Object result = reader.readObject();
reader.close();
return result;
} catch (FileNotFoundException e) { // 编译时异常
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
4》序列化应用:
示例一:
示例二:person类
5》优缺点:
优点:1.内建支持
· 2.易于实现
· 缺点:1.需要implements Serializable接口
2. 占用空间过大
· 3.由于额外的开销导致速度变比较慢
以上可以作为面试回答用;