根据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的图片
有人能向我解释一下,为什么当文档声明字节类型应该能够保存这个值时,这是不可能的吗?
提前谢谢!
1条答案
按热度按时间de90aj5v1#
0b10000000
是积极的吗int
128没有直接用于byte
,仅限int
,long
,float
,double
,char
,boolean
,String
以及null
. 您将需要一个cast将其分配给byte
.这与任何其他表示相同:
如果从
int
编译时常量表达式(如文字)到byte
如果不涉及截断(即-128到127),则该语言允许省略强制转换。