最小值不能保存在字节中

qmb5sa22  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(357)

根据https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html java中的字节是:
字节数据类型是一个8位有符号2的补码整数。最小值为-128,最大值为127(含)。”
如果我用java写2的补码形式的最大值(127),我就可以把它保存为字节类型。

byte positive127 = 0b01111111;

但是,如果我尝试对最小值128执行相同的操作,它将被解释为整数。我不能把它保存在一个字节里。

byte negative127 = 0b10000000;

来自ide的图片
有人能向我解释一下,为什么当文档声明字节类型应该能够保存这个值时,这是不可能的吗?
提前谢谢!

de90aj5v

de90aj5v1#

0b10000000 是积极的吗 int 128没有直接用于 byte ,仅限 int , long , float , double , char , boolean , String 以及 null . 您将需要一个cast将其分配给 byte .

byte negative128 = (byte)0b10000000;

这与任何其他表示相同:

byte a = (byte)128;
byte b = (byte)0x80;

如果从 int 编译时常量表达式(如文字)到 byte 如果不涉及截断(即-128到127),则该语言允许省略强制转换。

byte c = -128;

相关问题