序列化对象和非序列化对象之间的区别?

Jon*_*Jon 1 java serialization deserialization

我试图理解 Java 中的序列化和反序列化意味着什么。

我想当代码被编译并进入处理器执行时,我们用 Java 语言编写的所有内容都会变成字节集。编译后,所有东西都变成机器语言或字节。正确的 ..?

因此,对象创建已经是一组位于内存中待处理的字节,那么序列化和非序列化术语对对象有什么特殊作用呢?

我不清楚在计算机硬件中想象这两个术语......!

任何人都可以帮忙吗..?

谢谢

Gho*_*ica 5

序列化是一种持久化机制。

您可以在运行时使用它将“内存中”对象转换为可以存储在文件或数据库中或可以通过某些网络发送的表示形式。

反序列化只是相反的操作:将“传输”表示转回“内存中”对象。

这样做的主要原因是:它允许“在内存中”表示任何有意义的东西。正如评论之一所述:Java 对象不一定存在于内存的一个连续部分中。但是,当您想要将此类对象“传递”到持久层或另一种编程语言时,必须具有构成 Java 对象的(字段)数据的这种顺序表示形式。

  • 很好的答案。我想补充一点:正如@Jon 所说:“如果内存中的对象已经是一组字节,为什么要使用序列化?”。这是当然的,因为序列化还可以用于与其他无法理解 Java 的“一组字节”格式的编程语言进行“通信”。(也许你可以说得更好:-p)..关于抽象的一些东西...... (2认同)
  • 区分“内存中”对象和序列化对象的一种方法是,“内存中”对象可以分布在内存中的多个区域(因为稍微过于简单化,每个 Java 对象都是一个单独的区域和一个“String”)示例由一个区域中的“String”字段和另一区域中的关联“char[]”字段组成)。*序列化*形式是一个连续的字节块:所有内容都在一个易于处理的区域中。如果你传递它,你就会传递你需要的关于字符串的一切。 (2认同)