序列化是将数据变成可以传输的形式:
1.java对象的形式
2.二进制形式
再通过IO传输;可以通过网络传输也可以将数据保存到文件中或者从文件中取出。
java中通过原生的ObjectOutputStream 类中的writeObject方法和readObject方法可以实现将java对象进行的读取或者通过网络传输(这里说是将java对象进行操作,其实最底层还是要将java变为二进制),其中传输的java对象需要实现java.io.Serializable接口添加一个属性private static final long serialVersionUID,保证java类唯一且传输的前后未发生改变才能正确传输。如果没有手动实现java.io.Serializable接口,java编译器会自动生成,其中生成的serialVersionUID在对类进行改动的时候会更改,这时候如果再的传输话,自动生成的serialVersionUID在传输前后对不上就会抛异常。
另一种形式就是将java对象转化为字符串再通过二进制形式的方式进行传输。也可以将字符串当作对象进行处理,String类中默认实现了java.io.Serializable接口,如果不将字符串当作java对象处理,那么就是不通过ObjectOutputStream 类中的writeObject方法和readObject方法将字符串以java对象的形式进行传输,而是以二进制的方式直接传输。这时候不走writeObject方法和readObject方法。最为常见的就是将java对象转化为json形式进行传输。fastjson和jackjson框架是常用的将java对象转化为json的工具。SpringMVC中@ResponseBody注解就是将要返回给前端数据转化为json格式进行序列化传输。
标签:java,二进制,对象,readObject,传输,理解,序列化 From: https://www.cnblogs.com/66ccffkira/p/16656885.html