我把 Person 对象序列化之后之后放到一个字节数组 byte[ ] 里,然后遍历这个字节数组 -> 将数组里所有元素相加,但是为啥最后相加得到的值不是实体类中三个属性值之和, 而是 3281 呢 ?
如果这样写有问题,我想知道应该怎样计算出 对象序列化之后所有属性值相加之和呢 ?
实体类 ->
主函数 ->
我把 Person 对象序列化之后之后放到一个字节数组 byte[ ] 里,然后遍历这个字节数组 -> 将数组里所有元素相加,但是为啥最后相加得到的值不是实体类中三个属性值之和, 而是 3281 呢 ?
如果这样写有问题,我想知道应该怎样计算出 对象序列化之后所有属性值相加之和呢 ?
实体类 ->
主函数 ->
引用chatgpt内容作答:
在你的代码中,你将一个Person对象序列化并存储在字节数组byte[]中,然后对字节数组进行遍历,并将数组中的所有元素相加,得到了一个检验和值。然而,你期望得到的是Person对象的三个属性值之和,而不是字节数组的相加和。
问题出在这里:当你将一个Person对象序列化为字节数组时,实际上序列化的是对象的内部表示形式,而不是对象的属性值本身。因此,对字节数组进行简单相加并不能得到你期望的结果。
如果你想计算Person对象的属性值之和,你可以修改代码如下:
public class Test1 {
public static void main(String[] args) throws Exception {
Person person = new Person(1, 1, 1);
int sum = person.getName() + person.getAge() + person.getSex();
System.out.println("Sum = " + sum);
}
}
这样,你会得到Person对象的三个属性值之和为 3。
字节数组是用于在网络传输、持久化等场景下将对象序列化的一种方式,并不直接提供对对象属性的操作。如果你需要对对象属性进行计算或操作,你应该直接使用对象的方法和属性。