IO流笔记(2)

1、什么是对象的序列化(Serialize)?为什么要实现对象的序列化?

序列化是指将对象的状态信息转换为可以存储或传输的形式(2进制数据)的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

序列化的目的:

1)永久的保存对象,保存对象的字节序列到本地文件中;

2)通过序列化对象在网络中传递对象;

3)通过序列化对象在进程间传递对象。

2、ObjectInputStream类 和ObjectOutputStream类

如果我们想要序列化一个对象,如我们自定义的User类的对象,那么这个对象必须实现Serializable接口。Serializable接口没有任何的抽象方法,实现这个接口仅仅是为了通知编译器已这个对象将要被序列化,所以此接口仅仅是一个表示接口。类似的用法还有Cloneable接口,实现这个接口也只是起到通知编译器的作用。

3.对象的序列化和反序列化

想要完成对象的输入输出,还必须依靠ObjectInputStream和ObjectOutputStream;

使用ObjectOutPutStream输出对象的流程成为序列化对象,使用ObjectInputStream输入流读取对象的过程称为反序列化。

扫描二维码关注公众号,回复: 2669325 查看本文章

4.到底序列化了哪些东西呢?

所有的对象拥有各自的属性值,但是所有的方法都是公共的,所以序列化对象的时候实际上序列化的就是属性。

简单例子:

//在使用Object流时,需要先将Object写入文件再读取
public class Demo13 {

	public static void main(String[] args) throws FileNotFoundException, IOException {
		// TODO Auto-generated method stub
		ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("F:\\M.txt"));
		oos.writeObject(new Obj());
		oos.flush();
		oos.close();

	}

}
class Obj implements Serializable{

	private static final long serialVersionUID = 1L;
	
}

猜你喜欢

转载自blog.csdn.net/qq_36055407/article/details/81180360