gpt4 book ai didi

赋值上下文中的 Java 基元转换 Long 和 int

转载 作者:IT老高 更新时间:2023-10-28 20:59:44 27 4
gpt4 key购买 nike

Long ll = 102; // Error
Byte bb = 101; // No error

为什么 Long 赋值会导致编译时错误,而 Byte 赋值没问题?

Long ll = 102 导致编译器错误“类型不匹配:无法从 int 转换为 Long”。我假设编译器会将 102 扩大到 long,然后框到 Long。但它没有发生。

但是 Byte bb = 101; 没有产生编译器错误。在这里我猜,101 被缩小为 byte(非长整数常量),然后被装箱到 Byte。收窄没问题,放宽有什么问题?

最佳答案

这是因为您使用的是 Long 而不是 long。 Java 自动装箱不会在同一步骤中同时从 int 转换为 long,然后将 long 自动装箱为 Long

将您的代码更改为 long ll 即可。

Java 中没有 byte 原语的标记 - 在 byte 的有效范围内输入的任何值(-128 到 +127)都可以被视为byteinteger 取决于上下文。在这种情况下,它将它作为 byte 处理,然后自动装箱能够对其进行处理。

我不确定为什么决定让 Java 以这种方式工作。字节处理似乎与所有其他数字类型不一致。

关于赋值上下文中的 Java 基元转换 Long 和 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20632003/

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