JAVA序列化知识小结
概述
先问自己两个问题,什么是序列化?为什么要进行序列化?
1. 序列化就是将数据结构或对象转换成可以存储或传输的形式,通常是二进制字节流,也可以是 JSON, XML 等文本格式。
2. 序列化的核心目的是解决对象的存储和传输问题,使得对象可以脱离内存环境而存在或传递。
- 内存中的对象在程序退出后会消失,通过序列化可以将对象保存到文件、数据库等存储介质中,下次程序启动时再通过反序列化恢复,实现对象的持久化存储。
- 网络只能传输字节流等原始数据格式,无法直接传输内存中的对象。序列化可以将对象转换为字节流,通过网络发送到远程节点,接收方再通过反序列化还原为对象。(内存中的对象虽然最终以二进制形式存在(计算机底层所有数据都是字节),但它的二进制形式与 “可传输 / 可存储的字节流” 有本质区别,不能直接等同于序列化后的字节流。)
- 不同编程语言或系统对内存对象的表示方式不同,通过统一的序列化格式(如 JSON、Protocol Buffers),可以实现不同环境间的数据交换。
知识点小结
1. serialVersionUID 有什么作用?
在 Java 序列化机制中,serialVersionUID
是一个静态常量,用于标识序列化类的版本,主要作用是验证序列化对象与反序列化时的类是否兼容。