Java序列化是什么?你知道什么时候需要序列化吗?

什么是 java 序列化?什么情况下需要序列化?

序列化:将 Java 对象转换成字节流的过程。

反序列化:将字节流转换成 Java 对象的过程。

当 Java 对象需要在网络上传输 或者 持久化存储到文件中时,就需要对 Java 对象进行序列化处理。

序列化的实现:类实现 Serializable 接口,这个接口没有需要实现的方法。实现 Serializable 接口是为了告诉 jvm 这个类的对象可以被序列化。

注意事项:

  • 某个类可以被序列化,则其子类也可以被序列化
  • 声明为 static 和 transient 的成员变量,不能被序列化。static 成员变量是描述类级别的属性,transient 表示临时数据
  • 反序列化读取序列化对象的顺序要保持一致

具体使用

package constxiong.interview; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; /** * 测试序列化,反序列化 * @author ConstXiong * @date 2019-06-17 09:31:22 */ public class TestSerializable implements Serializable { private static final long serialVersionUID = 5887391604554532906L; private int id; private String name; public TestSerializable(int id, String name) { this.id = id; this.name = name; } @Override public String toString() { return "TestSerializable [id=" + id + ", name=" + name + "]"; } @SuppressWarnings("resource") public static void main(String[] args) throws IOException, ClassNotFoundException { //序列化 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("TestSerializable.obj")); oos.writeObject("测试序列化"); oos.writeObject(618); TestSerializable test = new TestSerializable(1, "ConstXiong"); oos.writeObject(test); //反序列化 ObjectInputStream ois = new ObjectInputStream(new FileInputStream("TestSerializable.obj")); System.out.println((String)ois.readObject()); System.out.println((Integer)ois.readObject()); System.out.println((TestSerializable)ois.readObject()); } } 

打印结果:

测试序列化 618 TestSerializable [id=1, name=ConstXiong] 

喜欢这篇文章的话,可以给作者点个喜欢,点下关注,每天都会分享Java相关文章!

记得一定要关注我哦,会不定时的福利赠送,包括整理的面试题,学习资料,源码等~~

Java序列化是什么?你知道什么时候需要序列化吗?相关推荐

  1. Java面试题汇总及答案2021最新(序列化含答案)

    Java面试题汇总及答案2021最新(序列化含答案) 为大家整理了2021最新的Java面试题及答案下载,这套Java面试题总汇已经汇总了Java基础面试到高级Java面试题,几乎涵盖了作为一个Jav ...

  2. 【26天高效学习Java编程】Day22:Java中的属性集-缓冲流-转换流-序列化流详解

    本专栏将从基础开始,循序渐进,由浅入深讲解Java的基本使用,希望大家都能够从中有所收获,也请大家多多支持. 专栏地址:26天高效学习Java编程 相关软件地址:软件地址 所有代码地址:代码地址 如果 ...

  3. java io 对象_JAVA基础知识之IO——对象序列化

    对象序列化 Java对象序列化(Serialize)是指将Java对象写入IO流,反序列化(Deserilize)则是从IO流中恢复该Java对象. 对象序列化将程序运行时内存中的对象以字节码的方式保 ...

  4. Thinking in java 琐碎知识点之 I/O流 、对象序列化

    Java I/O流 .对象序列化 1.File类    此类的实例可能表示(也可能不表示)实际文件系统对象,如文件或目录.    File类可以新建.删除和重命名文件和目录,但是File不能访问文件本 ...

  5. Java拾遗:004 - JDK、Hadoop、Hessian序列化

    2019独角兽企业重金招聘Python工程师标准>>> JDK序列化 在分布式架构中,序列化是分布式的基础构成之一,我们需要把单台设备上的数据通过序列化(编码.压缩)后通过网络传输给 ...

  6. android 序列化_Android高级架构进阶之数据传输与序列化

    更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/474380680 本篇文章将从以下几个内容来阐述数据传输与序列化: [Serializable原理 ...

  7. java-Transient关键字、Volatile关键字介绍和序列化、反序列化机制、单例类序列化

    - Transient关键字 Java的serialization提供了一种持久化对象实例的机制.当持久化对象时,可能有一个特殊的对象数据成员,我们不想  用serialization机制来保存它.为 ...

  8. 关于网络传输序列化这件“小“事(涵盖主流的序列化分析)

    文章目录 序列化 如何选择序列化协议 常用的序列化 JDK原生的序列化方式 简单使用 优点 缺点 JSON序列化 简单实用 优点 缺点 Protobuf 简单实用 1. 添加maven依赖 2. 添加 ...

  9. C# WebApi Xml序列化问题解决方法:“ObjectContent`1”类型未能序列化内容类型“application/xml;charset=utf-8“的响应正文。...

    C# WebApi Xml序列化问题解决方法:"ObjectContent`1"类型未能序列化内容类型"application/xml;charset=utf-8&quo ...

  10. java图片序列化_Java中的强大武器——对象的序列化

    原标题:Java中的强大武器--对象的序列化 所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象.这个过程也可以通过网络实现,可以先在Windows机器上创建一个对象, ...

最新文章

  1. 计算机视觉(CV)的算法有哪些,具体都有哪些特点?
  2. Android8.0恢复出厂设置失败-BroadcastQueue: Background execution not allowed
  3. 【OpenCV3】图像最大轮廓检测——cvFindBiggestContour()封装
  4. 智能计算升级背后:华为“不想再搬砖”
  5. 笔记-高项案例题-2018年下-项目管理-项目集管理-项目组合管理
  6. 【笔记】opencv图像运算 图像加密
  7. Android之程序反复回调一个类的解决办法
  8. python kotlin_Java和Python中类似Kotlin的生成器,续:附加参数
  9. Infor与Marketo®合作,帮助全球企业实现客户体验变革
  10. 搜狗2011笔试题+答案解析
  11. Spring框架学习[IoC容器高级特性]
  12. 织梦++高级搜索php,织梦高级搜索页面advancedsearch.php调用自定义字段
  13. Linux操作系统基本命令
  14. java mysql 分页计算公式_关于Java的分页算法,急!
  15. 2数据库表增加一个字段_详解PostgreSQL用户、数据库及表的管理、操作与授权
  16. Why can't Gmail forward outgoing mail?
  17. Linux驱动开发|音频驱动
  18. 微信无法登陆,您绑定的QQ号疑似被盗解决方案
  19. html5自闭合标签有哪些,自闭合标签与伪元素
  20. 配置Tomcat详细教程!

热门文章

  1. javascript 时间戳判断日期
  2. 大话主席(superslide和 touchslide)插件的使用
  3. monkeyrunner屏幕滑动
  4. Windows CMD PowerShell ,Set-Location : 找不到接受实际参数“Hub\resources”的位置形式参数。
  5. openstack之Cinder
  6. java中border布局_java中BorderLayout的使用方法
  7. 保护眼睛的好方法(转载)
  8. 如何制作好的油封密封件?
  9. wordcloud参数
  10. Amazon开发技术图书春季排行榜观察与分析