浅克隆:复制对象,不复制对象的引用;
深克隆:复制对象,以及对象的引用。
总结:
1、在java中,只要一个类实现了java.io.Serializable接口,那么它就可以被序列化;
2、通过ObjectOutputStream和ObjectInputStream对对象进行序列化和反序列化操作;
3、对象是否允许被反序列化,不仅仅是取决于对象的代码是否一致,同时还有一个重要的因素(UID);
4、序列化不保存静态变量;
5、要想父类对象也参与序列化操作,那么必须要让父类也实现Serializable接口;
6、Transient关键字,主要是控制变量是否能够被序列化。如果没有被序列化的成员变量反序列化后,会被设置成出初始化值,比如 String -> null;
7、通过序列化操作实现深度克隆;
主流的序列化技术有哪些:
json、Hessian(2)、xml、protobuf、kryo、msgPack、FST、thrift、protostuff、avro