Java 若将成员数据声明为基本数据类型,若对象声明为可序列化的,值是否会序列化?

Java 若将成员数据声明为基本数据类型,若对象声明为可序列化的,值是否会序列化?,java,serialization,wrapper,primitive,Java,Serialization,Wrapper,Primitive,我有一个问题,使用原语数据类型而不是它们的包装器计数器部件是否会对它们的序列化产生任何应有的影响 例如,我有一个班上的人 public class Person implements Serializable{ private int age; } 相对于 public class Person implements Serializable{ private Integer age; } 它们的区别是什么?我指的是Java的序列化: 虽然int是一种基本类型,它只存储变量的值(二进制),但

我有一个问题,使用原语数据类型而不是它们的包装器计数器部件是否会对它们的序列化产生任何应有的影响

例如,我有一个班上的人

public class Person implements Serializable{
private int age;
}
相对于

public class Person implements Serializable{
private Integer age;
}

它们的区别是什么?

我指的是Java的序列化:

虽然
int
是一种基本类型,它只存储变量的值(二进制),但是
Integer
对象(使用
ObjectOutputStream
)将存储一些“元数据”,当发生反序列化时,它将看到
Integer
对象

是的,序列化不仅存储对象,还存储对象的状态

private Integer value = 5;
值在
Integer
中被“包装”(缺少更好的单词),整个对象被存储

添加注释:为了存储对象/变量,请在字段中标记一个
瞬态
,例如

transient private Integer value = 5;
相关资源:


好吧,确切的序列化格式将略有不同(仅32位与包含32位和头的序列化整数对象不同),但两者都可以序列化和反序列化

若将成员数据声明为基本数据类型,若对象声明为可序列化的,值是否会序列化

是的,所有未标记为
transient
的内容都将被序列化,包括原语


你想做什么?

有人在我身后告诉我,使用Integer而不是int,因为序列化将不包括int,而是Integer。