java中静态不能被序列化的疑问

Python012

java中静态不能被序列化的疑问,第1张

对象的序列化是操作的堆内存中的数据,静态变量又称作类变量。类一加载,就初始化了。静态变量在方法区里。zhang,,12,,haha这个对象是可以创建的,非静态可以访问静态。当你序列化zhang,,12,,haha这个对象的时候,类的静态变量是先于非静态加载进来的。当序列化的时候,首先读到了静态的,后边的非静态就不会被取走。所以我们说,序列化静态的变量是没有意义的。非静态的变量如果不想被序列化可以用transient修饰。

java序列化中如果要标记为不可序列化的字段,可以使用关键字:tranisant修饰。

Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想

用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。

transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。