序列化是将内存中的对象,通过某种可存储的形式进行表示,然后进行传输或存储。我们知道,计算机中底层只是0或1二进制形式,也就是ASCII码。而内存中的对象确实一种复杂的对象,所以就需要一种可以描述对象的机制,这种机制就是序列化协议。
常用的有以下几种序列化协议:
JDK序列化
jdk序列化会生成二进制文件类似于class文件,(Java中的calss文件是16进制文件)是经过编译器预处理过的一种文件,是Java的执行文件存在形式,它本身是二进制文件,但是不可以被系统直接执行,而是需要虚拟机解释执行。
所以打开之后并不是我们说的二进制0或1。如果是0或1了,那就不需要JVM进行解释执行了,所以我们常说java是半编译半解释型的语言。
jdk序列化生成的java规范的二进制文件打开如下(16进制):