Java 序列化和反序列化
把对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为对象的过程称为对象的反序列化。
对象的序列化主要有两种用途:
1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;
2) 在网络上传送对象的字节序列。
在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些seesion先序列化到硬盘中,等要用了,再把保存在硬盘中的对象还原到内存中。
当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。
二、JDK类库中的序列化API
java.io.ObjectOutputStream代表对象输出流,它的writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。
java.io.ObjectInputStream代表对象输入流,它的readObject()方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回。
只有实现了Serializable和Externalizable接口的类的对象才能被序列化。Externalizable接口继承自 Serializable接口,实现Externalizable接口的类完全由自身来控制序列化的行为,而仅实现Serializable接口的类可以 采用默认的序列化方式 。
对象序列化包括如下步骤:
1) 创建一个对象输出流,它可以包装一个其他类型的目标输出流,如文件输出流;
2) 通过对象输出流的writeObject()方法写对象。
对象反序列化的步骤如下:
1) 创建一个对象输入流,它可以包装一个其他类型的源输入流,如文件输入流;
2) 通过对象输入流的readObject()方法读取对象。
Java 序列化和反序列化相关推荐
- java 序列化概念和作用_结合代码详细解读Java序列化与反序列化概念理解
Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...
- Java中如何引用另一个类里的集合_【18期】Java序列化与反序列化三连问:是什么?为什么要?如何做?...
Java序列化与反序列化是什么? Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程: 序列化:对象序列化的最主要的用处就是在传递和保存对象 ...
- java序列化与反序列化(转)
Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...
- java序列化和反序列化以及序列化ID的作用分析
java序列化和反序列化 一.概念 java对象序列化的意思就是将对象的状态转化成字节流,以后可以通过这些值再生成相同状态的对象.对象序列化是对象持久化的一种实现方法,它是将对象的属性和方法转化为一 ...
- java序列化和反序列化_Java恶意序列化背后的历史和动机
java序列化和反序列化 与Java的序列化机制相关的问题已广为人知. 有效的Java 1st Edition (第10章)和有效的Java 2nd Edition (第11章)的整个最后一章都专门讨 ...
- 教你彻底学会Java序列化和反序列化
Java序列化是什么? Java序列化是指把Java对象转换为字节序列的过程,Java反序列化是指把字节序列恢复为Java对象的过程.反序列化:客户端重文件,或者网络中获取到文件以后,在内存中重构对象 ...
- 理论 | 教你彻底学会Java序列化和反序列化
这是小小本周的第四篇 Java序列化是什么? Java序列化是指把Java对象转换为字节序列的过程,Java反序列化是指把字节序列恢复为Java对象的过程.反序列化:客户端重文件,或者网络中获取到文件 ...
- Java序列化与反序列化(一)
目录 序列化与反序列化 1.最简单的使用:Serializable 接口 2. 序列化 ID 的问题 3. 静态字段不会序列化 4. 屏蔽字段:transient 5. 父类的序列化 6. 自定义序列 ...
- Serializable详解(1):代码验证Java序列化与反序列化
说明:本文为Serializable详解(1),最后两段内容在翻译上出现歧义(暂时未翻译),将在后续的Serializable(2)文中补充. 介绍:本文根据JDK英文文档翻译而成,本译文并非完全按照 ...
- Java 序列化与反序列化
Java 序列化与反序列化 文章目录 Java 序列化与反序列化 1 序列化与反序列化的概念 2 核心类与关键字总览 3 序列化与反序列化的过程 3 应用示例 4 序列化版本号的作用 serialVe ...
最新文章
- Sublime Text 2/3 配置文件详解
- win2008 域服务器搭建教程
- linux shell 网盘,linux在shell中获取时间
- 简单banner制作
- static静态关键词 1214
- 《更友好的网站url设计》
- 优雅地修改多模块maven项目中的版本号
- 《非洲归来 不必远方》读后感
- 资产标签二维码方案设计
- 2B领域最大的媒体沙龙又来了,你以什么姿势参加?
- Retrofit2+RxJava2+ButterKnife框架搭建步骤
- 什么是互联网产品的运营?,互联网营销
- 侍魂服务器维护,侍魂胧月传说6月3日停机维护更新公告
- PCB做的 东南大学 校徽
- Win2019AD域DNS服务器NSLOOKUP出现 Non-existent domain访问不了某一网站
- 深度强化学习-基于价值的强化学习-TD算法和Q学习(三)
- 【学习WRF笔记2】安装WRF
- python调用海康相机进行Apriltag检测
- 3d点云处理--特征点提取
- 有限域F_2上多项式的分解
热门文章
- [虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(三)
- 【转】【OPenGL】OPenGL 画图板-- 中点算法画圆
- 最长上升子序列模板 hdu 1087 Super Jumping! Jumping! Jumping!
- shell 脚本创建虚拟机 并配置网卡ip地址(两个脚本)
- 学习日记之工厂方法模式和Effective C++
- Oracle 11gR2学习之二(创建数据库及OEM管理篇)
- Windows 2003 Server R2 x64 IIS6.0 eWebEditor无法显示的问题
- IT 人士工作中的十不要!
- 158.用 Read4 读取 N 个字符read characters from file multiple calls
- 【免费毕设】基于PHP实现的网上留言管理系统的设计(源代码+论文)