gpt4 book ai didi

java - 最小值不能以字节保存

转载 作者:行者123 更新时间:2023-12-03 18:48:32 27 4
gpt4 key购买 nike

根据 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html Java 中的一个字节是:

“byte数据类型为8位有符号二进制补码整数,最小值为-128,最大值为127(含)。”

如果我在 Java 中以二进制补码形式写入最大值 (127),我可以将其保存为字节类型。

byte positive127 = 0b01111111;

但是,如果我尝试对最小值 -128 执行相同操作,它会被解释为整数。我无法将它保存在一个字节中。

byte negative127 = 0b10000000;

Picture from IDE

有人可以向我解释为什么当文档声明字节类型应该能够保存此值时这是不可能的吗?

提前致谢!

最佳答案

0b10000000是正的int128。byte没有直接的文字表示,只有intlong, float, double, char, boolean, Stringnull。您需要进行强制转换以将其分配给 byte

byte negative128 = (byte)0b10000000;

这与任何其他表示相同:

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

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

byte c = -128;

关于java - 最小值不能以字节保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53654123/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com