java基础:序列化和反序列化 的个人理解

说一下个人理解总结,请先看完再往下看,会容易理解一些:(看完也可以不看下面的链接了)
以下为个人理解,如有误及时告知谢谢;

1,序列化和反序列化概念

序列化是为了在使对象可以转化为字节序列二进制数组,在I/O流中传输;
换句话说,不序列化无法转化为字节序列(可以理解为字节流的byte数组)进行传输;
序列化是指对象转化成字节序列(字节流的byte数组)的过程;
反序列化是指从字节序列(字节流的byte数组)转换成对象的过程;

属性问题:并且记住 static、transient 修饰的无法被序列化;final可以直接将值序列化(即可以理解为可以序列化);

transient 的小 tips:
1、变量被transient修饰,变量将不会被序列化
2、transient关键字只能修饰变量,而不能修饰方法和类。
3、被static关键字修饰的变量不参与序列化,一个静态static变量不管是否被transient修饰,均不能被序列化。
4、final变量值参与序列化,final transient同时修饰变量,final不会影响transient,一样不会参与序列化

2, Serializable 接口作用,也就是为啥要序列化

答:java规定的,需要实现这个接口才能序列化;简单说不实现就无法转换成字节序列(字节流的byte数组);

3,serialVersionUID 有什么用,不同数值有什么区别

答:实现序列化接口后,jdk会默认自动给我们匹配这个值;(对象变了、编译器变了,这个值也变了,就会认不出报错了)
我们自己写的、idea等工具生成的,数字不同没区别;只要序列化反序列化时别变就行;
这个值是必须是 static final long 的,最好设为private的,属性私有化;

以上为个人理解总结,具体测试可以参看大佬测试和解释:

代码测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值