为什么要序列化,什么是序列化?

在做java开发的时候,经常需要在对象上加序列化即实现implements Serializable 接口,这个接口没有任何的方法需要实现。这么做的目的是干什么的?这个目的在于,他做了一个标志,表示这个类是可以被用来序列化的,可以进行网络传输,可以以二进制的形式保存在文件系统中。

Java序列化是指把Java对象保存为二进制字节码的过程,Java反序列化是指把二进制码重新转换成Java对象的过程。

那么为什么需要序列化呢?

第一种情况是:一般情况下Java对象的声明周期都比Java虚拟机的要短,实际应用中我们希望在JVM停止运行之后能够持久化指定的对象,这时候就需要把对象进行序列化之后保存。

第二种情况是:需要把Java对象通过网络进行传输的时候。因为数据只能够以二进制的形式在网络中进行传输,因此当把对象通过网络发送出去之前需要先序列化成二进制数据,在接收端读到二进制数据之后反序列化成Java对象。

验证文件存储为什么需要序列化:

在这里插入图片描述

字符串是已经实现了Serializable接口的
如果按正常字符串写入到文件中,使用sublime打开,会发现文件中存放的是二进制的数据:
在这里插入图片描述

如果没有序列化,会有报错信息:

为什么要保存成二进制数据呢?通过跟踪源码可以发现,java是根据一定的规范/协议将数据转化成二进制保存起来的。不建议看下去,太绕了。总之记住一句话:如果要对对象进行保存,就需要进行序列化。
网络传输为什么需要序列化呢?
计算机计算时只能使用二进制,因为只有高电平和低电平,所以用二进制,用十进制表示只是为了方便些,如果用二进制表示结果不把你看的累死

(1)可行性。由于二进制只有两种可能的取值0和1,因此在物理上最容易实现,可以用电子元件的两种不同状态来表示。如开关的接通和断开,晶体管的导通和截止,电位电平的高与低等。

(2)简易性。二进制的运算规则也比较简单,二进制的加法规则有4条:0+0=0;0+1=1;1+0=1;1+1=0(有进位),而十进制的加法规则有100条,因而使计算机运算器的硬件结构大大简化。

(3)逻辑性。由于二进制0和1正好盒逻辑代数的假(false)真(ture)相对应,有逻辑代数的理论基础,用二进制表示二值逻辑很自然。

总之记住一句话:计算机的电子元件使用二进制能比较快速进行逻辑判断和计算,所以网络传输需要进行序列化,转为二进制处理。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值