gpt4 book ai didi

java - 为什么数组赋值不兼容,即使它们的数据类型是兼容的?

转载 作者:搜寻专家 更新时间:2023-11-01 04:07:21 25 4
gpt4 key购买 nike

byte b =10;   
int a = b; // Primitive data type widening
// Works perfectly fine

上面的代码不会给出任何错误/警告。但为什么同样不适用于下面提到的代码?

byte[] b = new byte[10];
int[] i1 = b; //Cannot convert from byte[] to int[]
int[] i2 = new byte[10]; //Cannot convert from byte[] to int[]

我的问题是,既然 int 可以保存任何和所有字节值,为什么数组不是这种情况?

毕竟他们都持有地址。如果这对于 ref 变量是可能的,这将是向上转换

最佳答案

new byte[10] 创建的数组可以包含 10 个 byte 值。如果您能够将它分配给 int[] 类型的变量,编译器会(错误地)假定您的 byte 数组可以包含 10 个 int 值。

考虑以下无效代码:

byte[] b = new byte[10];
b[0] = 10000; // too large for byte

以及以下有效的代码:

int[] i2 = new int[10];
i2[0] = 10000;

如果 int[] i2 = new byte[10]; 有效,编译器将允许您将 int 存储在 类型的变量中字节.

关于java - 为什么数组赋值不兼容,即使它们的数据类型是兼容的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50734617/

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