对象存储在jvm的堆中,jvm的堆内存是向服务器的内存申请的一块内存,所以是断电丢失的(RAM),那如何可持久化保存对象数据,或者在不同jmv之间传递对象数据呢?这就需要序列化。
    在代码中我们需要implments Serializable对象,而Serializable接口是一个标记接口(没有任何可实现方法)。
    ObjectOutputStream和ObjectInputStream用于序列化用于在网络传输或本地存储java对象。
    在其中会校验对象是否implments Serializable对象,而且在实现了Serializable接口后,还需要设置一个serialVersionUID,该值可以理解为对象的版本号。
    这个值是否不设置?不行!
    因为如果不设置,序列化过程中会临时计算一个值,如果对象进行了变更,计算值也会变更,导致序列化和反序列化的版本不一致抛异常。
    这个值是否需要改变?通常情况下不需要!
    除非你明确就是不兼容老版本的对象,否则设置后基本无需改变。
    这个值怎么设置?
    两种,一种是IDE根据对象属性自动生成,一种手动设置为1L,这两种都可以。

    总结:serialVersionUID需要设置但不需要改变。