栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java:为什么我不能将int转换为Long

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java:为什么我不能将int转换为Long

我认为问题不在于泛型转换原语和包装。问题是关于将int转换为java.lang.Long和将int转换为java.lang.Short之间的区别。

JLS:“此外,如果该表达式是类型为byte,short,char或int的常量表达式(第15.28节):

  • 如果变量的类型为byte,short或char,并且常量表达式的值可表示为变量的类型,则可以使用缩窄的原始转换。
  • 如果变量的类型是:
    • 字节和常量表达式的值可以在类型字节中表示。
    • 短,常量表达式的值可以用短类型表示。
    • 字符和常量表达式的值可以用char“类型表示。

因此,所有<= 32bit的原语都可以轻松地进行转换,而长(64bit)则需要特殊的转换。这似乎是不合逻辑的。

照常,所有不合逻辑的事情都可以解释Java的向后兼容性或历史演变。例如,从1.0版开始,java中就存在Integer和Long类。从1.1开始,java中就存在Short和Byte类。即在起点处整数可以是两种类型:整数或长整数。因此,我认为这两种数字有不同的转换规则。然后添加了short和byte。我想short和byte在具体的JVM中可以有32位实现。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/486515.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号