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

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 [vasp+phonopy]表面模型的间隙扩散系数中尝试频率如何用声子频率计算
  • ¥15 现在新建了一个f1的就不行了包括所有新建的项目都无法生成,路径命名都没问题,keil和cubemx重装过还是不行,如何解决?(标签-java|关键词-固件)
  • ¥15 web前端开发怎么实现像图片这样的页面啊?
  • ¥15 ubuntu 20.04 网卡启用后,只有ipv6 没有 ipv4 无法上网
  • ¥15 QT任务管理器无法正确获取展开,有悬赏15元速求,如何解决?(相关搜索:标识符|结构体)
  • ¥15 使用delphi 10.3+intraweb 生成的页面怎么实现自动滚屏
  • ¥20 思科:Router c3600 MN-4E插槽
  • ¥15 16进制修改视频的元数据
  • ¥15 HTML中css的位置信息居然会导致元素大小发生变化
  • ¥15 岛津txt格式文件转nirs格式