我们可以将较大数字类型(例如long)转换为较小数字类型, 比如一个字节。对于exp:
long l = 130L;
byte b = (byte)l;
编译时,即使缩小的值太大,我们也不会收到运行时错误 对于类型(在这种情况下是字节)。 理想情况下,编译器应该抱怨,但它有用吗?
答案 0 :(得分:4)
这是有效的,因为您明确告诉编译器允许它。您可以通过在长变量之前添加(byte)
来执行此操作。
Java Language Specification(java 7)解释了当你进行所谓的缩小演员时会发生什么。它只会丢弃最重要的位。
答案 1 :(得分:0)
为什么允许从长到字节的java中的狭义转换
由于:
编译时,我们不会收到运行时错误
编译时,您可以获得的最多是“编译时错误”。运行应用程序时,您可以获得“运行时错误”。
在这种情况下,您没有收到编译时错误,因为您明确声明要将其转换为byte
。转换为byte
的类型为byte
,可以将其分配给类型为byte
的变量。