一天一个面试小问题 no.3 Java对象为啥要实现Serializable接口?

Java对象为啥要实现Serializable接口?

工作中总是看到实体类实现了Serializable,并且常常还带有一个Long类型的常量,这到底是是干什么的,为什么要实现这个接口,作用是什么?带着这些疑问,开始寻根问底之旅。

问题一:什么是Serializable?

Serializable:序列化,可串行化。在这里我们称之为序列化。
什么是序列化?
无论任何语言底层的IO操作都是通过字节来完成的。
在java面向对象的编程语言中,java中对象是主要数据载体,系统或者说底层是通过i/o流的方式进行数据的传输。
序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。
通俗的讲 序列化就是将我们的实体类对象转化为可以运行在底层的字节码,反序列化正好相反是将字节码转为对象。

问题二:为什么要序列化?

在实际开发过程中,实体类不去实现这个接口,也可以正常的CURD,为什么要实现序列化接口呢?
Serializable接口 是一个空接口 里面没有任何代码,这种接口可以认为是标识接口,目的在于告诉JVM将此对象进行序列化。
实现序列化接口后,可以通过ObjectOutputStream方法 进行保存到任意位置,因为对象存在内存当中,当服务器停止时,对象消失,实现序列化 可以达到持久保存的目的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值