把对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为对象的过程称为对象的反序列化。

   对象的序列化主要有两种用途:
   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 序列化和反序列化相关推荐

  1. java 序列化概念和作用_结合代码详细解读Java序列化与反序列化概念理解

    Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...

  2. Java中如何引用另一个类里的集合_【18期】Java序列化与反序列化三连问:是什么?为什么要?如何做?...

    Java序列化与反序列化是什么? Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程: 序列化:对象序列化的最主要的用处就是在传递和保存对象 ...

  3. java序列化与反序列化(转)

    Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...

  4. java序列化和反序列化以及序列化ID的作用分析

     java序列化和反序列化 一.概念 java对象序列化的意思就是将对象的状态转化成字节流,以后可以通过这些值再生成相同状态的对象.对象序列化是对象持久化的一种实现方法,它是将对象的属性和方法转化为一 ...

  5. java序列化和反序列化_Java恶意序列化背后的历史和动机

    java序列化和反序列化 与Java的序列化机制相关的问题已广为人知. 有效的Java 1st Edition (第10章)和有效的Java 2nd Edition (第11章)的整个最后一章都专门讨 ...

  6. 教你彻底学会Java序列化和反序列化

    Java序列化是什么? Java序列化是指把Java对象转换为字节序列的过程,Java反序列化是指把字节序列恢复为Java对象的过程.反序列化:客户端重文件,或者网络中获取到文件以后,在内存中重构对象 ...

  7. 理论 | 教你彻底学会Java序列化和反序列化

    这是小小本周的第四篇 Java序列化是什么? Java序列化是指把Java对象转换为字节序列的过程,Java反序列化是指把字节序列恢复为Java对象的过程.反序列化:客户端重文件,或者网络中获取到文件 ...

  8. Java序列化与反序列化(一)

    目录 序列化与反序列化 1.最简单的使用:Serializable 接口 2. 序列化 ID 的问题 3. 静态字段不会序列化 4. 屏蔽字段:transient 5. 父类的序列化 6. 自定义序列 ...

  9. Serializable详解(1):代码验证Java序列化与反序列化

    说明:本文为Serializable详解(1),最后两段内容在翻译上出现歧义(暂时未翻译),将在后续的Serializable(2)文中补充. 介绍:本文根据JDK英文文档翻译而成,本译文并非完全按照 ...

  10. Java 序列化与反序列化

    Java 序列化与反序列化 文章目录 Java 序列化与反序列化 1 序列化与反序列化的概念 2 核心类与关键字总览 3 序列化与反序列化的过程 3 应用示例 4 序列化版本号的作用 serialVe ...

最新文章

  1. Sublime Text 2/3 配置文件详解
  2. win2008 域服务器搭建教程
  3. linux shell 网盘,linux在shell中获取时间
  4. 简单banner制作
  5. static静态关键词 1214
  6. 《更友好的网站url设计》
  7. 优雅地修改多模块maven项目中的版本号
  8. 《非洲归来 不必远方》读后感
  9. 资产标签二维码方案设计
  10. 2B领域最大的媒体沙龙又来了,你以什么姿势参加?
  11. Retrofit2+RxJava2+ButterKnife框架搭建步骤
  12. 什么是互联网产品的运营?,互联网营销
  13. 侍魂服务器维护,侍魂胧月传说6月3日停机维护更新公告
  14. PCB做的 东南大学 校徽
  15. Win2019AD域DNS服务器NSLOOKUP出现 Non-existent domain访问不了某一网站
  16. 深度强化学习-基于价值的强化学习-TD算法和Q学习(三)
  17. 【学习WRF笔记2】安装WRF
  18. python调用海康相机进行Apriltag检测
  19. 3d点云处理--特征点提取
  20. 有限域F_2上多项式的分解

热门文章

  1. [虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(三)
  2. 【转】【OPenGL】OPenGL 画图板-- 中点算法画圆
  3. 最长上升子序列模板 hdu 1087 Super Jumping! Jumping! Jumping!
  4. shell 脚本创建虚拟机 并配置网卡ip地址(两个脚本)
  5. 学习日记之工厂方法模式和Effective C++
  6. Oracle 11gR2学习之二(创建数据库及OEM管理篇)
  7. Windows 2003 Server R2 x64 IIS6.0 eWebEditor无法显示的问题
  8. IT 人士工作中的十不要!
  9. 158.用 Read4 读取 N 个字符read characters from file multiple calls
  10. 【免费毕设】基于PHP实现的网上留言管理系统的设计(源代码+论文)