我初始化了一个字节,如下所示:

byte b = (byte) 0b11110000000;

由于一个字节为8位大小,因此我期望它会引发一些异常或错误,因为该数字只能分配给short或以上。还是评估为-124?还是这也许是“正常”行为? (没有引发异常,但是变量溢出了)?

最佳答案

您应该得到-128

当您将int显式转换为byte时,将采用最低的8位,其余部分将被丢弃。

在您的示例中,最低8位是10000000,该数字的十进制值为-128

没有显式的强制转换,代码将无法通过编译,因为您的分配会导致信息丢失。

关于java - java-为什么这个字节不会引起异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45713897/

10-09 02:11