java中的十六进制比较

ybzsozfc  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(656)

这里到底发生了什么,什么时候 byte - byte 发生了什么?假设,

byteResult = byte1 - byte2;

哪里,

byte1 = 0xff;
byte2 = 0x01;

那么,是不是 byte1 变成值为255和的整数 byte2 1和 byteResult 分配到254,然后转换为 byte0xFE ? 然后是 if 是否检查状态?请详细的帮助将对我很有帮助。对不起,如果我的问题模棱两可!在这里,我找到了一些东西,但不是我想要的。java字节比较

x6492ojm

x6492ojm1#

不,字节不会被转换成整数。
从jls 5.2分配转换:
另外,如果表达式是常量表达式(§15.28)byte、short、char或int类型:-如果变量的类型是byte、short或char,并且常量表达式的值可以用变量的类型表示,则可以使用缩小原语转换。
同时检查减去2个字节等于int?
这是java编程的基本前提。所有整数都是int类型,除非具体转换为另一种类型。因此,任何整数运算都会自动将所有操作数从较窄的类型(byte,short)提升为int类型,而int操作数运算的结果总是int(我想我现在已经把它打败了)。
如果需要两个字节的简短算术结果,请执行以下操作:

short result = (short) (byte1 - byte2)

这种显式的强制转换使得程序员有责任在不需要时丢弃多余的位。否则,整数运算在32位中完成。

相关问题