什么叫序列化
序列化是一种处理对象流的机制——把内存中的Java对象转换成二进制流。
对象流化后,将对象内容保存在磁盘文件中或作为数据流进行网络传输。简单来说,序列化是将对象的状态信息转换为可以存储或传输的形式的过程。
为什么需要序列化
java对象序列化后可以很方便的存储或者在网络中传输。
从服务器硬盘上把序列化的对象取出,然后通过网络传到客户端,再由客户端把序列化的对象读入内存,执行相应的处理。
这里首先要确定一件事,内存中将对象作为参数传递其实只是传递对象的引用(指针)。
就如我们熟知的继承,并非是将父类对象保存在子类对象中,而是子类对象包含了父类的引用。
在Java内部,继承是通过隐式的组合实现的。子类对象中会保存一个实例对象的引用super,引用指向其父类。
实际的方法调用中,java会优先在当前类对象中寻找名称相同的方法,如果没有,进根据super引用到父类对象中去寻找,所以,如果父类方法在子类中得到重写,java会调用子类的方法,而不会调用被重写的父类方法。
这也是多态的实现机制。
到这里,基本就明白了,内存传来传去的都是地址而已,如果直接将其直接存库,到时候内存又经过刷洗,你从库中取出来的地址无疑是刻舟求剑。
java的优势在于跨平台,尤其在分布式环境中,传递对象是非常普遍的,既然涉及到了传输,势必有相应的协议,序列化就是为了解决这个问题而提出的。