java序列化

来源:互联网 发布:淘宝模特怎么入行 编辑:程序博客网 时间:2024/06/01 10:32

1、为什么要序列化

对象的序列化,一般程序在运行时,产生对象,这些对象随着程序的停止运行而消失,
但如果我们想把某些对象(因为是对象,所以有各自不同的特性)保存下来,在程序终止运行后,
这些对象仍然存在,可以在程序再次运行时读取这些对象的值,或者在其他程序中利用这些保存下来的对象。
这种情况下就要用到对象的序列化。


2、序列化用处

在传递,和保存对象(object)的时候,保证对象的完整性和可传递性。
譬如通过网络传输,或者把一个对象保存成一个文件的时候,要实现序列化接口


3、ObjectOutputStream关系

序列化就是一种用来处理对象流的机制,
所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,
也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,
implements Serializable只是为了标注该对象是可被序列化的,
然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,
接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),
要恢复的话则用输入流。  


4 serializable和 parcelable

1 效率上parcelable比serializable更高

parcelable序列化在内存中,serializable序列化在文件中

3 所以长久序列化使用serializable


1.在使用内存的时候Parcelable比Serializable的性能高。
2.Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC(内存回收)。
3.Parcelable不能使用在将对象存储在磁盘上这种情况,因为在外界的变化下Parcelable不能很好的保证数据的持续性。

0 0