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