我初始化了一个字节如下:
byte b = (byte) 0b11110000000;
由于一个字节是 8 位大小,我预计它会抛出一些异常或错误,因为这个数字应该只能分配给一个 short 或以上。仍然评估为-124?或者这可能是“正常”行为? (没有抛出异常,但变量溢出)?
最佳答案
你应该得到 -128
。
当您显式地将 int
转换为 byte
时,最低的 8 位被采用,其余的被丢弃。
在您的示例中,最低 8 位是 10000000
,该数字的十进制值为 -128
。
如果没有显式转换,代码将无法通过编译,因为您的分配会导致信息丢失。
关于java - 为什么这个字节不会导致异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45713897/