gpt4 book ai didi

java - 为什么字节数组不能存储在java中的整数数组中

转载 作者:太空狗 更新时间:2023-10-29 22:31:36 25 4
gpt4 key购买 nike

此代码有效

int h;
byte r;
h=r;

但这些都不是

int[] h;
byte[] r;
h=r;

或者说

int[] h =new byte[4];

我想知道为什么?

最佳答案

存在从 byteint 的隐式转换,但不是byte[]整数[]。这很有意义——JIT 编译器知道要获取 int[] 中的值,它只需要将索引乘以 4 并将其添加到数据的开头(之后验证,并假设没有额外的填充,当然)。如果您可以将 byte[] 引用分配给 int[] 变量,那将无法工作 - 表示 是不同的。

语言本可以被设计成允许这种转换,但让它创建一个 int[],它包含所有字节的副本,但那本来是就 Java 其余部分的设计而言,这非常令人惊讶,其中赋值运算符只是将运算符右侧的值复制到左侧的变量。

或者,我们可以对 VM 施加限制,即每个数组访问都必须查看相关数组对象的实际 类型,并计算出如何适本地访问元素...但那将是可怕的(甚至比当前引用类型数组协方差的肮脏更糟糕)。

关于java - 为什么字节数组不能存储在java中的整数数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17908708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com