面试题:Java序列化与反序列化

本文介绍了Java中序列化和反序列化的概念、应用场景、实现方式,包括继承Serializable和Externalizable接口,并讨论了serialVersionUID的作用、静态变量的序列化处理以及序列化在深拷贝中的应用。同时,还简要比较了常见的序列化协议。
摘要由CSDN通过智能技术生成

目录

序列化和反序列化的概念

当我们在Java中创建对象的时候,对象会一直存在,直到程序终止时。但有时候可能存在一种"持久化"场景:我们需要让对象能够在程序不运行的情况下,仍能存在并保存其信息。当程序再次运行时 还可以通过该对象的保存下来的信息 来重建该对象。序列化和反序列化 就应运而生了,序列化机制可以使对象可以脱离程序的运行而独立存在。

  • 序列化: 将对象转换成二进制字节流的过程
  • 反序列化:从二进制字节流中恢复对象的过程

应用场景?

  1. 对象在进行网络传输的时候,需要先被序列化,接收到序列化的对象之后需要再进行反序列化;比如远程方法调用 RPC
  2. 将对象存储到文件中的时候需要进行序列化,将对象从文件中读取出来需要进行反序列化。
  3. 将对象存储到内存中,需要进行序列化,将对象从内存中读取出来需要进行反序列化。
  4. 将对象存储到数据库(如 Redis)时,需要用到序列化,将对象从缓存数据库中读取出来需要反序列化。

 

 

序列化实现的方式

如果使用Jdk自带的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值