序列化
一、序列化是什么
Java序列化是指把Java对象转换为字节序列的过程;Java反序列化是指把字节序列恢复为Java对象的过程;
二、要使用序列化的原因
1.网络传输
网络传输的数据必须是二进制数据,但是在Java中都是对象,是没有办法在网络中传输的,所以就需要对Java对象进行序列化,并且要求这个序列化是可逆的,也就是说可以进行反序列化,否者人家都不知道你传递的是啥消息
2.对象持久化
将内存中的对象状态保存到文件或者数据库中
3.实现分布式对象
如RMI(远程方法调用)要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样
三、序列化的实现
1.Java原生序列化
需要被序列化的类实现Serializable接口 具体实现:序列化ObjectOutputStream#writeObject(Object obj)方法
反序列化:ObjectInputStream#readObject(Object obj)方法
缺点:效率较低,反序列化后的流数据比较大
2.第三方的序列化方式
如:JSON、Hessian等
注意
transient修饰的属性,是不会被序列化的,静态static修饰的属性,是不会被序列化的