简单来说,Java 序列化(Serialization)是把“内存中的 Java 对象”变成可以存储或传输的字节流的一种机制。之所以要用它,主要是为了持久化、传输和共享对象状态。
下面从“为什么要”和“常见用途”两个角度说清楚。
Java 对象存在于 JVM 内存中:
序列化解决了这个问题:
对象 → 字节序列(可存文件 / 发网络)
字节序列 → 对象(反序列化)
可以把对象保存到:
例如:
ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream("user.dat"));
oos.writeObject(user);
程序重启后还能恢复。
在分布式系统中:
都需要把对象“变成字节”传过去。
例如:
通过序列化 + 反序列化,可以得到一个完全独立的新对象:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(obj);
ObjectInputStream ois = new ObjectInputStream(
new ByteArrayInputStream(bos.toByteArray()));
Object copy = ois.readObject();
很多 Java 技术底层都在用序列化:
⚠️ 重要补充:
Java 原生序列化并不是首选方案,原因包括:
现在更常用:
Java 序列化用于把对象变成字节,以便存储、传输或恢复对象状态;但在现代开发中,往往被更高效、更安全的格式替代。
如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。