Java:序列化与反序列化详解(史上最全)

需求:
  1. 字节、字符可以直接保存到文件中,即使程序不再运行,也依然存在。在某些情况,也希望对象能够在程序不运行的情况下仍能存在并保存其信息。
  2. 字节、字符可以自由的在网络间传输(字节流、字符流),但是这都是些简单符号,不能做逻辑处理。某些情况下,希望对象也能在网络中传输,进行相关逻辑操作。

序列化就是解决这两件事的。

基本概念

序列化: 把对象转换为字节序列的过程称为对象的序列化。
反序列化: 把字节序列恢复为对象的过程称为对象的反序列化。
概念都是抽象晦涩的。要结合代码理解

话不多说,上代码

实现序列化/反序列化有两种方法,一种是实现Serializable接口,另一种是实现Externalizable接口。

  1. 实现Serializable接口方式:
    
    
  2. 实现Externalizable接口方式:
    
    
    

用途

把对象放redis缓存中,实现分布式服务器间的对象共享,例如:共享session。

其他的要点

  1. 静态变量不能被序列化,因为静态变量属于类而不是对象。
  2. 被transient修饰的变量,不再是序列化的一部分

未完待续…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值