我们可以将较大的数字类型(例如 long)转换为较小的数字类型, 比如一个字节。对于 exp:
long l = 130L;
byte b = (byte)l;
编译时,即使缩小的值太大,我们也不会出现运行时错误 对于类型(在本例中为字节)。 理想情况下,编译器应该会报错,但它为什么会起作用?
最佳答案
这是可行的,因为您明确告诉编译器允许它。您可以通过在 long 变量之前添加 (byte)
来实现。
Java Language Specification (java 7) 解释了当您进行所谓的缩小转换时会发生什么。它只会丢弃最重要的位。
关于java - 为什么在 java 中允许从 long 到 byte 进行窄转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25500017/