java中序列化和反序列化深入探究

前言

相信序列化和反序列化在开发中经常用到,javaBean也往往被建议实现Serializable接口,那么到底什么是序列化?为什么实现了Serializable接口就可以进行序列化了?序列化方式有哪些?这些序列化方式各自的优缺点有哪些?这些问题都是本文将探讨的问题。

概念

网上搜索序列化定义往往都是Java对象转换为字节序列的过程,我觉得这个定义不够友好,这次我倒觉得百度百科的定义值得借鉴:序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。注意:序列化是保存状态信息,也就是成员变量的值,与对象中的方法无关。

为什么需要序列化和反序列化?

  • 本地对象持久化

java平台允许我们创建可复用的java对象(比如单例),但一般情况下,只有当jvm处于运行时,这些对象才可能存在,即这些对象的生命周期不会比JVM的生命周期更长。但现实应用中,就可能要求jvm重启后能继续使用。因此才需要java对象的序列化功能。

  • 网络传输对象

在网络中传送对象的字节序列。可以通过序列化把主机A进程上的对象序列化为二进制序列,传输到主机B,B上的进程从二进制序列中反序列化为对象。现在网络传输中用的更多的序列化方式是json序列化和反序列化。而不是jdk自带的序列化方式。

序列化方式有哪些?

JDK提供的通过输出流实现的序列化和输入流实现的反序列化

要序列化对象的类

public class SeriableObject {
    private String name;
    private String password;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
       
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值