码迷,mamicode.com
首页 > 其他好文 > 详细

序列化和反序列化

时间:2017-02-10 20:10:33      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:transient   bsp   参数   ble   一致性   java虚拟机   字节   serial   为什么   

什么是java的序列化和反序列化

java序列化就是把java对象转换为字节序列的过程。对于transient和static修饰的属性不会被序列化。原因:transient的作用就是这样,static是因为序列化作用的是对象,static修饰后是属于类的,所以没用。

java反序列化就是把字节序列转换为java对象的过程。

 

为什么要序列化

很多应用中,需要对对象进行序列化,让它们离开内存,放入到硬盘中去,以便长期保存。比如session,当有10万用户并发访问,可能出现10万个session对象,内存可能吃不消,web容器会把一些session序列化到硬盘中,

需要用的时候,再还原回来。

 

序列化需要实现java.io.Serializable接口,序列化的时候有一个serialVersionUID参数,java序列化机制是通过运行时判断类的serialVersionUID来验证版本一致性。在进行反序列化,Java虚拟机会把传过来的字节流中的serialVersionUID和本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的实体类,可以进行反序列化,否则Java虚拟机会拒绝对这个实体类进行反序列化并抛出异常。serialVersionUID有两种生成方式:

 

1、默认的1L

 

2、根据类名、接口名、成员方法以及属性等来生成一个64位的Hash字段

 

序列化和反序列化

标签:transient   bsp   参数   ble   一致性   java虚拟机   字节   serial   为什么   

原文地址:http://www.cnblogs.com/tp123/p/6387603.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!