为什么java需要序列化对象
- 序列化是一种用来处理对象流的机制
- 所谓对象流:就是将对象的内容进行流化,可以对流化后的对象进行读写操作,也可将流化后的对象传输与网络之间
- 序列化是为了解决在对象流进行读写操作时所引发的问题
- 序列化的实现:将需要被序列化的类实现Serializable接口(标记接口) ,该接口没有需要被实现的方法,implement Serializable 只是为了标注该对象是可被序列化的,而后使用一个输出流(如 FileOutPutStream)来构造出一个ObjectOutPutStream对象,接着,是用writerObject方法就可以参数为Obj的对象写出(即保存其状态),要是恢复的要使用相应的输入流ObjectInputStream
什么时候使用序列化?
- 对象序列化可以实现分布式对象,
主要用于如RMI(远程调用 Remote method invocation) 用利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样
2.java对象序列化不仅保留一个对象数据,而且递归保存对象引用的每个对象的数据
可以将整个对象层次写入字节流中,可以保存在文件中或在网络连接上传递,利用对象序列化可以进行对象的深复制,即复制对象本身及引用的对象本身,序列化一个对象可能得到整个对象序列
3.序列化可以将内存中的类写入文件或者数据库
比如,将某个类序列化后保存为文件,下次读取时只需要将文件中的数据反序列化就可以将原来的类还远到内存中,也可以将类序列化为流进行传输,总的来说就是将一个已经实例的类转换为文件储存,下次需要实例化的时候只要反序列化既可以将实例化的内存中保留序列化时类中锁有变量和状态
序列化以后都是字节流了,无论他原来是什么东西,都能变成一样东西,就可以进行通用的格式传输或保存,传输结束以后,要再次使用,就进行反序列化,这样对象还是对象,文件还是文件
- 因为JAVA中要将对象序列化为流的形式进行传输
- 对象的序列化就是为了数据传输,在你的代码里是对象格式,而在传输的时候不可能还保持对象的样子
- 当两个进程在进行通信时,彼此可以发送各种类型的数据,无论是何种类型的数据,都会以二进制序列额形式在网络上传输,发送方需要把这个JAVA对象转换为字节序列化,才能在网络上传送,接收方则需要把字节序列在恢复成java对象
1.概念
序列化:吧Java对象转换为字节序列的过程反序列化:把字节序列恢复为java对象的过程
吧对象的字节序列永久保存在硬盘上,通常存放在一个文件中
在网络上传送对象的字节序列
- 所谓的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需要序列化对象的更多相关文章
- Android使用HttpURLConnection通过POST方式发送java序列化对象
使用HttpURLConnection类不仅可以向WebService发送字符串,还可以发送序列化的java对象,实现Android手机和服务器之间的数据交互. Android端代码: public ...
- 【译】Java中的对象序列化
前言 好久没翻译simple java了,睡前来一篇. 译文链接: http://www.programcreek.com/2014/01/java-serialization/ 什么是对象序列化 在 ...
- java序列化对象 插入、查询、更新到数据库
java序列化对象 插入.查询.更新到数据库 : 实现代码例如以下: import java.io.ByteArrayInputStream; import java.io.ByteArrayOutp ...
- Java 序列化 对象序列化和反序列化
Java 序列化 对象序列化和反序列化 @author ixenos 对象序列化是什么 1.对象序列化就是把一个对象的状态转化成一个字节流. 我们可以把这样的字节流存储为一个文件,作为对这个对象的复制 ...
- Java IO(Properties/对象序列化/打印流/commons-io)
Java IO(Properties/对象序列化/打印流/commons-io) Properties Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载. ...
- Java I/O - 对象的输入输出与序列化
先说概念: 一.相关概念 序列化是Java提供的一种将对象写入到输出流.并在之后将其读回的机制. 序列化:把内存中的java对象转换成与平台无关的二进制字节序列,以便永久保存在磁盘上或通过网络进行传输 ...
- 序列化+fastjson和java各种数据对象相互转化
序列化的定义 序列化就是一种用来处理对象流的机制 所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间. 序列化是将对象转换为容易传输的格式的过程 例 ...
- Java 序列化对象工具类
SerializationUtils.java package javax.utils; import java.io.ByteArrayInputStream; import java.io.Byt ...
- Java基础之对象序列化
1. 什么是Java对象序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长.但在现 ...
随机推荐
- log4j学习(一)最简单的例子
前言: 之前笔者一直是在System.out中打日志的,由于笔者大部分时候是编写在tomcat容器里运行的一些个小web应用,所以这么做似乎没什么问题:打印出来的日志都可以在tomcat自己的log目 ...
- 902. Numbers At Most N Given Digit Set
We have a sorted set of digits D, a non-empty subset of {'1','2','3','4','5','6','7','8','9'}. (Not ...
- Memoization-329. Longest Increasing Path in a Matrix
Given an integer matrix, find the length of the longest increasing path. From each cell, you can eit ...
- Mac 忘记密码
今天早上到公司发现电脑被动过,马上查看浏览器的历史记录,果然发现了一些痕迹.虽然是公司的电脑,但是随便被人翻看,还是很不爽! 于是马上把原来公司给的默认密码改掉. 不料,中午出去吃了个饭,回来就把密码 ...
- webpack快速入门——打包后如何调试
在配置devtool时,webpack给我们提供了四种选项. source-map:在一个单独文件中产生一个完整且功能完全的文件.这个文件具有最好的source map,但是它会减慢打包速度: che ...
- [JavaScript] js获取当前页面url网址信息
在WEB开发中,时常会用到javascript来获取当前页面的url网址信息,在这里是我的一些获取url信息的小总结. 下面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblog ...
- RSA的JAVA实现 及javax.crypto.IllegalBlockSizeException
一.背景 最近工作中涉及到RSA加密的相关需求任务,之前对加密算法了解不多,开发过程中遇到了一些坑记录一下. 二.RSA原理 RSA加密是非对称加密,公开私钥,保留私钥.通信时数据通过公开的公钥加密, ...
- iOS设置圆角的三种方式
第一种方法:通过设置layer的属性 最简单的一种,但是很影响性能,一般在正常的开发中使用很少. ? 1 2 3 4 5 6 7 UIImageView *imageView = [[UIImageV ...
- Linux CentOS7系统配置nginx服务器
作为一个以服务器为主要市场的操作系统,主要就是对客户端的请求进行响应,进行处理的.在经历过系统镜像安装和本地配置好ssh功能后,接下来进行服务器的安装,这里我以nginx为主,介绍一下如何安装ngin ...
- Python基础5:列表 元祖 字典 集合 Json
[ 列表] 列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表. 列表是可变的(mutable)——即:可以改变列表的内容. 相关操作: ...