A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不愿一人 中级黑马   /  2013-12-30 19:26  /  1168 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

哪位同学能帮我通俗的解释下java中的序列化,
最好举一个实际的应用场景

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
在计算机里的所有数据都是以二进制的方式存储的,序列化就是把java的对象序列化成二进制存储或传输。
一般应用在,存储,和网络传输上。
  1. import java.io.*;

  2. import java.util.Date;

  3. /**

  4. * 对象的序列化和反序列化测试类.   

  5. */

  6. public class ObjectSaver {

  7.        public static void main(String[] args) throws Exception {

  8.               ObjectOutputStream out = new ObjectOutputStream

  9.                      (new FileOutputStream("D:""objectFile.obj"));

  10.               //序列化对象

  11.               Customer customer = new Customer("阿蜜果", 24);

  12.               out.writeObject("你好!");

  13.               out.writeObject(new Date());

  14.               out.writeObject(customer);

  15.               out.writeInt(123); //写入基本类型数据

  16.               out.close();

  17.               //反序列化对象

  18.               ObjectInputStream in = new ObjectInputStream

  19.                      (new FileInputStream("D:""objectFile.obj"));

  20.               System.out.println("obj1=" + (String) in.readObject());

  21.               System.out.println("obj2=" + (Date) in.readObject());

  22.               Customer obj3 = (Customer) in.readObject();

  23.               System.out.println("obj3=" + obj3);

  24.               int obj4 = in.readInt();

  25.               System.out.println("obj4=" + obj4);

  26.               in.close();

  27.        }

  28. }

  29. class Customer implements Serializable {

  30.        private String name;

  31.        private int age;

  32.        public Customer(String name, int age) {

  33.               this.name = name;

  34.               this.age = age;

  35.        }

  36.        public String toString() {

  37.               return "name=" + name + ", age=" + age;

  38.        }

  39. }

  40.        输出结果如下:

  41. obj1=你好!

  42. obj2=Sat Sep 15 22:02:21 CST 2007

  43. obj3=name=阿蜜果, age=24

  44. obj4=123
复制代码

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

回复 使用道具 举报




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

       2、什么时候需要用到序列化:当你想把内存中的对象存入文件或者数据库中;当你想用套接字在网络上传输对象时。




       说错或者不全面请谅解。第一次回答

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 鼓励分+1

查看全部评分

回复 使用道具 举报
FFF 金牌黑马 2013-12-30 22:44:24
板凳
序列化是什么:
  序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。
  序列化分为两大部分:序列化和反序列化。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据要求有恢复数据的对象实例
  序列化的什么特点:
  如果某个类能够被序列化,其子类也可以被序列化。声明为static和transient类型的成员数据不能被序列化。因为static代表类的状态, transient代表对象的临时数据。
  什么时候使用序列化:
  一:对象序列化可以实现分布式对象。主要应用例如:RMI要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样。
  二:java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中,可以保存在文件中或在网络 连接上传递。利用对象序列化可以进行对象的"深复制",即复制对象本身及引用的对象本身。序列化一个对象可能得到整个对象序列。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马