澜色海湾 2023-06-30 20:43 采纳率: 87.5%
浏览 84
已结题

Java对象序列化成字节数组

我把 Person 对象序列化之后之后放到一个字节数组 byte[ ] 里,然后遍历这个字节数组 -> 将数组里所有元素相加,但是为啥最后相加得到的值不是实体类中三个属性值之和, 而是 3281 呢 ?
如果这样写有问题,我想知道应该怎样计算出 对象序列化之后所有属性值相加之和呢 ?

实体类 ->

img

主函数 ->

img

  • 写回答

6条回答 默认 最新

  • CF2301_77400554X 2023-06-30 21:23
    关注

    引用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。

    字节数组是用于在网络传输、持久化等场景下将对象序列化的一种方式,并不直接提供对对象属性的操作。如果你需要对对象属性进行计算或操作,你应该直接使用对象的方法和属性。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月4日
  • 已采纳回答 7月1日
  • 创建了问题 6月30日

悬赏问题

  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥15 怎么做商品窗体,完完全全不会
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?
  • ¥15 铜与钢双金属板叠加在一起每种材料300mm长,18mm宽,4mm厚一端固定并加热至80℃,当加热端温度保持不变时另一端的稳态温度。ansys
  • ¥15 django5安装失败
  • ¥15 Java与Hbase相关问题
  • ¥15 后缀 crn 游戏文件提取资源
  • ¥20 bash代码推送不上去 git fetch origin master #失败了