• 序列化是一种用来处理对象流的机制
  • 所谓对象流:就是将对象的内容进行流化,可以对流化后的对象进行读写操作,也可将流化后的对象传输与网络之间
  • 序列化是为了解决在对象流进行读写操作时所引发的问题
  • 序列化的实现:将需要被序列化的类实现Serializable接口(标记接口) ,该接口没有需要被实现的方法,implement Serializable 只是为了标注该对象是可被序列化的,而后使用一个输出流(如 FileOutPutStream)来构造出一个ObjectOutPutStream对象,接着,是用writerObject方法就可以参数为Obj的对象写出(即保存其状态),要是恢复的要使用相应的输入流ObjectInputStream
 

什么时候使用序列化?

  1. 对象序列化可以实现分布式对象,
主要用于如RMI(远程调用 Remote method invocation) 用利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样

  2.java对象序列化不仅保留一个对象数据,而且递归保存对象引用的每个对象的数据

可以将整个对象层次写入字节流中,可以保存在文件中或在网络连接上传递,利用对象序列化可以进行对象的深复制,即复制对象本身及引用的对象本身,序列化一个对象可能得到整个对象序列

  3.序列化可以将内存中的类写入文件或者数据库

比如,将某个类序列化后保存为文件,下次读取时只需要将文件中的数据反序列化就可以将原来的类还远到内存中,也可以将类序列化为流进行传输,总的来说就是将一个已经实例的类转换为文件储存,下次需要实例化的时候只要反序列化既可以将实例化的内存中保留序列化时类中锁有变量和状态
  4.对象,文件,数据,有许多不同的格式,很难统一传输和保存
序列化以后都是字节流了,无论他原来是什么东西,都能变成一样东西,就可以进行通用的格式传输或保存,传输结束以后,要再次使用,就进行反序列化,这样对象还是对象,文件还是文件
  • 因为JAVA中要将对象序列化为流的形式进行传输

  • 对象的序列化就是为了数据传输,在你的代码里是对象格式,而在传输的时候不可能还保持对象的样子
  • 当两个进程在进行通信时,彼此可以发送各种类型的数据,无论是何种类型的数据,都会以二进制序列额形式在网络上传输,发送方需要把这个JAVA对象转换为字节序列化,才能在网络上传送,接收方则需要把字节序列在恢复成java对象

  1.概念

序列化:吧Java对象转换为字节序列的过程
反序列化:把字节序列恢复为java对象的过程
  2.用途 对象的序列化主要用途有两种

吧对象的字节序列永久保存在硬盘上,通常存放在一个文件中

在网络上传送对象的字节序列

  • 所谓的Serializable,就是java提供的通用数据保存和读取的接口,至于从什么地方读出来和保存到哪里都被隐藏在函数参数的背后,这样子任何类型只要实现了Serializable接口,就可以保存到文件中,或者座位数据流的方式通过网络发送到别的地方,也可以用管道来传输到系统其它程序中,这样子极大简化类的设计,只要设计一个读取功能就能解决上面所说的问题
  • java的对象序列化能让你将一个实现了Serializable接口的对象转换成一组byte,这样日后要用到这个对象时候,就能把这些byte数据恢复出来,并据此重新构建那个几个对象了
  • 工作流中流程变量的几种类型:String Integer short long double boolean date binary serializable ,这就是什么将javabean实现序列化的原因了,因为你讲对象设置到流程变量中必须要实现序列化,否者报错找不到类型
  • java对象序列化机制就是把内存中的java对象(User之类的javabean)转换成为二进制流,java对象序列化以后可以很方便的储存或者在网络中传输
  • java的序列化机制是通过运行时判断类的序列化ID来判定版本是否一致
  • 在反序列化是,java虚拟机会通过二进制流中serialVersionID与本地的对应的实体类进行比较,如果相同就认为一致的,可以进行反序列化,正确获得信息,否则抛出序列化版本不一致的异常
  • 所以设计到数据传输或者储存类,严格意义上来说都要加上序列化ID,这也是一种良好的编程习惯.

为什么java需要序列化对象的更多相关文章

  1. Android使用HttpURLConnection通过POST方式发送java序列化对象

    使用HttpURLConnection类不仅可以向WebService发送字符串,还可以发送序列化的java对象,实现Android手机和服务器之间的数据交互. Android端代码: public ...

  2. 【译】Java中的对象序列化

    前言 好久没翻译simple java了,睡前来一篇. 译文链接: http://www.programcreek.com/2014/01/java-serialization/ 什么是对象序列化 在 ...

  3. java序列化对象 插入、查询、更新到数据库

    java序列化对象 插入.查询.更新到数据库 : 实现代码例如以下: import java.io.ByteArrayInputStream; import java.io.ByteArrayOutp ...

  4. Java 序列化 对象序列化和反序列化

    Java 序列化 对象序列化和反序列化 @author ixenos 对象序列化是什么 1.对象序列化就是把一个对象的状态转化成一个字节流. 我们可以把这样的字节流存储为一个文件,作为对这个对象的复制 ...

  5. Java IO(Properties/对象序列化/打印流/commons-io)

    Java IO(Properties/对象序列化/打印流/commons-io) Properties Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载. ...

  6. Java I/O - 对象的输入输出与序列化

    先说概念: 一.相关概念 序列化是Java提供的一种将对象写入到输出流.并在之后将其读回的机制. 序列化:把内存中的java对象转换成与平台无关的二进制字节序列,以便永久保存在磁盘上或通过网络进行传输 ...

  7. 序列化+fastjson和java各种数据对象相互转化

    序列化的定义 序列化就是一种用来处理对象流的机制 所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间. 序列化是将对象转换为容易传输的格式的过程 例 ...

  8. Java 序列化对象工具类

    SerializationUtils.java package javax.utils; import java.io.ByteArrayInputStream; import java.io.Byt ...

  9. Java基础之对象序列化

    1. 什么是Java对象序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长.但在现 ...

随机推荐

  1. LD算法的C++实现(基于编辑距离的文本比较算法)

    算法看这里: http://www.cnblogs.com/grenet/archive/2010/06/01/1748448.html 用数组实现: #include <iostream> ...

  2. 在Android中使用Protocol Buffers(上篇)

    本文来自网易云社区. 总览 先来看一下 FlatBuffers 项目已经为我们提供了什么,而我们在将 FlatBuffers 用到我们的项目中时又需要做什么的整体流程.如下图: 在使用 FlatBuf ...

  3. Delphi - 如何执行Windows、OSX、Linux的外部程序?

    毫无疑问,几乎对所有Delphi程序员来说,不用说如何在Windows下如何执行外部程序了!目前Delphi,真的已经很棒了,Delphi有一套和VCL并驾齐驱的图形界面库,叫做"FireM ...

  4. win10中shift+右键,在此处打开cmd窗口

    通过添加注册表项,实现右击“在此处打开命令行功能” 注册表位置:HKEY_CLASSES_ROOT\Directory\Background\shell\ win10系统用标识右键菜单打开命令行的键, ...

  5. 用layui遇到过的问题

    1.报错“layui.form is not a function”问题 把代码中这一串修改一下:form = layui.form(); 括号去掉就行: form = layui.form; 如果你 ...

  6. 《Python绝技:运用Python成为顶级黑客》 用Python进行取证调查

    1.你曾经去过哪里?——在注册表中分析无线访问热点: 以管理员权限开启cmd,输入如下命令来列出每个网络显示出profile Guid对网络的描述.网络名和网关的MAC地址: reg query &q ...

  7. Golang 实现守护主进程

    package main import ( "fmt" "runtime" "sync" "time" ) func t ...

  8. hdoj1068 Girls and Boys(二分图的最大独立集)

    题意:有n个人,要彼此认识.选择一个集合,使得集合里的每个人相互不认识.求集合中人数的最大值. 求二分图的最大独立集. 公式:最大独立集=顶点数-最大匹配 这个题目中因为集合是一个,所以求出最大匹配数 ...

  9. Part15 – 前端之jQuery

    本节内容 jQuery 一.jQuery jQuery是对DOM的封装 jQuery 中文在线文档:http://jquery.cuishifeng.cn/ 模块(Python) <--> ...

  10. 【xsy1230】 树(tree) 点分治+线段树

    题目大意:有一棵$n$个节点的树,点的标号为$1$到$n$.树中的边有边权.给你$m$个询问,每个询问包含三个参数$l,r,pos$,你要求出标号在$l$到$r$之间的所有点中,到节点$pos$距离最 ...