什么是java序列化

Python010

什么是java序列化,第1张

Java中的序列化是把Java对象转换为字节序列的过程,能够将一个实例对象的状态信息写入到一个字节流中,使其可以通过socket进行传输、或者持久化到存储数据库或文件系统中,然后在需要的时候通过字节流中的信息来重构一个相同的

Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java对象序列化就能够帮助我们实现该功能。

使用Java对象序列化,在保存对象时,会把其状态保存为一组字节,在未来,再将这些字节组装成对象。必须注意地是,对象序列化保存的是对象的"状态",即它的成员变量。由此可知,对象序列化不会关注类中的静态变量。

1、序列化是干什么的?

简单说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来。虽然你可以 用自己的各种方法来保存Object states,

但是Java给你提供一种应该比你自己好的保存对象状态的机制、那就是序列化。

2、什么情况下需要序列化?

a)当你想把的内存中的对象保存到一个文件或者数据库中时候。

b)当你想用套接字在网络上传送对象的时候

c)当你想通过RMI传输对象的时候(RMI->Remote Method Invocation 远程方法调用)

3、当对一个对象实现序列化时,究竟发生了什么?

在没有序列化前,每个保存在堆(Heap)中的对象都有相应的状态(state),即实体变量(instance ariable)

例如:Foo myFoo=new Foo() myFoo.setWidth(20) myFoo.setHeight(40)