Java:为什么我不能将int转换为Long
java中的所有数字应该是int类型.
以下行在 Java> 1.5中是合法的 Short s = 1; // Will compile to Short s = Short.valueOf((short)1) - thus you can't exceed short max value i.e. Short s = 4444; // is invalid for autoboxing 相同的机制用于整数和字节实例化.但Long的作品完全不一样.以下代码给出编译时间错误 Long l = 10; 长时间使用相同的方法来自动装箱长型,所以 Long l = 10L; //is valid and is translated into Long.valueOf(10L) 我看不到为什么int不能分配给Long变量.对这件事有什么想法? 解决方法
我认为这个问题并不是关于一般铸造原始和包装物.
问题是将int转换为java.lang.Long和int到java.lang.Short之间的区别. JLS: >如果变量的类型为byte,short或char,则可以使用变窄的原语转换,并且常量表达式的值可在变量的类型中表示. >字节和常量表达式的值可以在类型字节中表示. 因此,所有< = 32位元素可以轻松地投射(64位),需要特殊的投射. 像往常一样的不合逻辑的事情在java的落后兼容性或历史演变中都有解释.例如. Class Integer和Long从1.0版本开始就存在于java中. Class 1.1中存在Java和Java类.那就是起点整数可以是两种类型:整数或长.所以我认为这两种类型的数字有不同的投射规则.然后添加短和字节.我想短和字节可以在具体的JVM中有32位的实现. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |