黑马程序员技术交流社区

标题: java序列化 [打印本页]

作者: 张海洋    时间: 2013-3-22 23:36
标题: java序列化
什么是java序列化,如何实现java序列化?
作者: 谷文仁    时间: 2013-3-22 23:41
序列化:将对象转化成流的过程称为序列化
反序列化:将流转化成对象的过程称之为反序列化
作者: 彭颖    时间: 2013-3-23 00:03


1、序列化: 简单说就是为了保存在内存中的各种对象的状态 ,并且可以把保存的对象状态再读出来
     虽然你可以用你自己的各种各样的方法来保存对象状态,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化

2、序列化使用的场景:
    A.当你想把的内存中的对象状态保存到文件中或数据库中时;
    B.当你想用套接字在网络上传送对象的时候;
    C.当你想通过RMI传输对象的时候;

序列化对象如下:  
Student zhangsan = new Student();
zhangsan.setAge(18);
zhangsan.setSex(male);
zhangsan.setHeight(178);

实例化过程代码:
FileOutputStream fos= new FileOutputStream("student.ser");
ObjectOutputStream oos = new ObjectOutputStream(fos);
os.writeObject(student);

       当通过上面的代码序列化之后,Studeng对象zhangsan的实例变量值(18,male,178)都被保存到student.ser文件中,这样以后又可以把它从文件中读出来,重新在堆中创建原来的对象。当然保存时候不仅仅是保存对象的实例变量的值,JVM还要保存一些小量信息,比如类的类型等以便恢复原来的对 象。

3、实现序列化保存到文件的一般步骤
     //1.创建个Fileoutputsteam         
    FileOutputStream fos  new FileOutputStream("student.ser");   

     //2.创建个objiectoutputstream      
     ObjectOutputStream oos    new ObjectOutputStream(fos );  

     //3.写入特定类的对象, 用方法writeobjiect()
     os.writeObject(Object1);
     os.writeObject(Object2);
     os.writeObject(Object3);

     //4.关闭流
     os.close();




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2