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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© huangqili 中级黑马   /  2014-7-12 15:07  /  801 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

序列化,又称“串化”,可以形象的把它理解为把JAVA对象内存中的数据采编成一串二进制的数据。
然后把这些数据存放在可以持久的数据存储设备,如磁盘。
当需要还原这些数据的时候,再通过反序列化的过程,把对象又重新还原到内存中。

java.io.Serializable接口是可以进行序列化的类的标志接口,该接口本身没有任何需要实现的抽象方法。
它仅仅是用来告诉JVM该类的对象的可以进行序列化的,并且它的序列化ID由静态的serialVersionUID变量提供

serialVersionUID变量其实是一个静态的long型的常量,它的作用在序列化和反序列化的过程中,起到了辨别一个类的作用。
在反序列化的时候,如果两个类的类名完全相同,
就通过serialVersionUID来判断该类是否符合要求,如果不行,则抛出异常。

Java的I/O提供了一对类用作对象的序列化和反序列化,主要包括ObjectOutputStream和ObjectInputStream。
它们的用法和字节流相似,只不过此时处理的是对象,而不仅仅是字节数据了。

总结:
序列化本质上就是把对象内存中的数据按照一定的规则,变成一系列的字节数据,然后再把这些字节数据写入到流中
而反序列化的过程相反,先读取字节数据,然后再重新组装成Java对象
所有需要进行序列化的类,都必须实现Serializable接口,必要时还需要提供静态的常量serialVersionUID。

评分

参与人数 1技术分 +1 收起 理由
淡夜清风 + 1 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马