JAVA基础——问题总结

122 阅读1分钟

为什么要序列化

把对象转化为字节序列的过程称为对象的序列化

把对象的字节序列恢复为对象的过程称为对象的反序列化

最终目的是为了对象可以跨平台存储和进行网络传输,其方式就是IO,而IO支持的数据格式就是数组,通常的序列化方式有jdk原生,hessian,json等,大部分都是序列化成二级制数组,也就是byte[]字节数组,JSON序列化方式生成的一串有规则的字符串

序列化主要有两种用途

  • 把对象的字节序列存储到硬盘上
  • 网络传输对象的字节序列

为什么要使用SerialversionUID

  • 如果用户没有自己声明一个serialVersionUID,接口会默认生成一个
  • 建议用户自己设置,因为class有改动默认的就会生成一个新的serialVersioUID,会导致反序列化失败,InvalidClassException异常

什么对象不会被序列化

  • 凡是被static修饰的字段是不会被序列化
  • 凡是被transient修饰的字段也是不会被序列化