JAVA序列化

JAVA序列化

是什么

java序列化就是将java对象转换为二进制编码的过程。

反序列化就是将二进制编码转换为java对象的过程。

为什么要进行序列化

序列化可以将对象及其状态持久化到内存或者磁盘中

java平台允许我们创建可复用的java对象,但是这些对象的生命周期小于JVM的生命周期,只有当JVM运行时,这些对象才会存在。但是在实际的应用中,我们可能会要在JVM停止工作之后使用这些对象,即需要在JVM结束后保存这些对象。序列化可以满足我们的这一需求。

可以用统一的格式保存文件

各种数据有许多不同的结构,但是序列化之后都变成了字节流,就可以以一种统一的格式进行传输和保存

使用序列化

  • 对象序列化保存的是对象的状态,即成员变量。序列化不会关注类中的静态变量。在保存状态时,会将其状态保存成二进制数组。
  • 除了在持久化对象时需要使用序列化之外,在进行RMI(远程方法调用),在网络中传输对象时,都要用到对象序列化。
  • 对象序列化时进行的是对象的深复制,即复制的是对象本身和引用的对象本身。序列化一个对象就能得到整个对象序列。

序列化的实现

  1. 在java中,只要一个类实现了java.io.Serializable接口,就可以被序列化
  2. 使用ObjectOutputStream和ObjectInputStream来进行对象的序列化和反序列化
  3. 在类中增加writeObject和readObject可以自定义序列化策略

Transient阻止序列化

  1. 在变量前声明Transient,可以阻止该变量被序列化到文件中去。在反序列化后,transient所修饰的变量被设置成初始值。如int为0,对象为null
  2. 在一些场景中,对象中有一些数据是敏感的,比如密码等信息,不希望在网络进行操作,这些变量就可以加上transient关键字。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

健鑫.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值