java对象的序列化与反序列化

IO——对象的序列化和反序列化
一、概念
1、对象序列化,就是将Object转换成byte序列,反之叫对象的反序列化
2、序列化流(ObjectOutputStream),字节的过滤流 —— writeObject()方法
反序列化流(ObjectInputStream)—— readObject()方法
3、序列化接口(Serializable)
对象必须实现序列化接口,才能进行序列化,否则将出现异常。
这个借口,没有任何方法,只是一个【标准】
二、transient关键字
1、transient修饰的元素,不会进行JVM默认的序列化:如int transient age = 10;在序列化和反序列化后,age的值为默认分配的值0(去掉某一个序列化)
2、可以自己通过重写序列化操作方式,来对transient修饰的元素进行想要的序列化。
自己实现序列化方法:通过从ArrayList中拿到writeObject()和readObject()方法,进行自写完成。
· 先执行s.defaultWriteObject(); 和 s.defaultReadObject()方法
· 再对于无法默认序列化的成员,可以进行.writeObject(obj)和this.obj = s.readObject()完成序列化

3、这样做的目的是提高效率。如ArrayList里,对数组的有效对象进行序列化

三.序列化时父类构造函数:<br>
1、一个类实现了序列化接口(Serializable),那么其子类都可以进行序列化,不要再去实现序列化接口了。
2、对子类对象进行反序列化操作时,如果其父类没有实现序列化接口(Serializable),那么其父类的构造函数就会被调用,若实现了,则不会调用。

注意内部类和大括号的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值