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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韩军博 黑马帝   /  2011-12-10 10:19  /  2846 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 韩军博 于 2011-12-10 21:12 编辑

请各位详细解释

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

4 个回复

倒序浏览
序列化(serialization)机制能够将一个实例对象的状态信息写入到一个字节流中,使其可以通过socket进行传输、或者持久化存储到数据库或文件系统中;然后在需要的时候,可以根据字节流中的信息来重构一个相同的对象。序列化是为了解决在对对象流进行读写操作时所引发的问题。简单的说,比如我们有时候将一个java 对象变成字节流的形式传出去或者从一个字节流中恢复成一个java 对象,如果该对象要被存储或被传输,那么该对象就必须实现serializable 接口,这样,javac 编译时就会进行特殊处理,编译的类才可以被writeObject方法操作,这就是所谓的序列化。需要被序列化的类必须实现Serializable 接口,该接口是一个mini 接口,其中没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的。但是,用静态关键字标识的对象不能序列化,并且在解序列是无效的!

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
1. 什么是java序列化?
    java序列化(SequenceInputStream)表示其他输入流的罗辑串联
    即它从输入流的有序集合开始,并从第一个输入流开始读取值,直到文件结尾,接着从第二个输入流读取,依次类推,直到包括的最后一个输入文件结尾为止。可理解成将多个小的读入流合并成一个大的读入流
     
2.如何实现java序列化?
  即SequenceInputStream的使用方法
  借用别人写好的,贴给楼主,如下:
     1、自己简单的写法。
  public class TestSequence {
  public static void main(String[] args)throws Exception{
  //不管怎么样,先创建两个文件。从里面读取数据,(我的文件里面有内容!)
  InputStream in1=new FileInputStream(new File("d:\\jack.txt"));
  InputStream in2=new FileInputStream(new File("d:\\jack2.txt"));
  //读取,数据后要生成的文件
  OutputStream ou=new FileOutputStream(new File("d:\\jack3.txt"));
  //创建SequenceInputStream类,
  SequenceInputStream si=new SequenceInputStream(in1,in2);
  //因为SequenceInputStream,是一个字节一个字节读,要判断一下是否读完了。
  int c=0;
  while((c=si.read())!=-1){
  //这里也是一个字节一个字节写的。
  ou.write(c);
  }
  //关闭所有的资源
  si.close();
  ou.close();
  in2.close();
  in1.close();
  }
  }
  

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
序列化是什么:
  序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。
  序列化分为两大部分:序列化和反序列化。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据要求有恢复数据的对象实例。

序列化的什么特点:
  如果某个类能够被序列化,其子类也可以被序列化。声明为static和transient类型的成员数据不能被序列化。因为static代表类的状态, transient代表对象的临时数据。

什么时候使用序列化:
  一:对象序列化可以实现分布式对象。主要应用例如:RMI要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样。
  二:java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中,可以保存在文件中 或在网络连接上传递。利用对象序列化可以进行对象的"深复制",即复制对象本身及引用的对象本身。序列化一个对象可能得到整个对象序列。

序列化的实现:
   将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
谢谢你们的回答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马