java中的字节比较

时间:2014-03-11 09:32:38

标签: java hex byte

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

byteResult = byte1 - byte2;

其中,

byte1 = 0xff;
byte2 = 0x01;

然后, byte1变为整数,其值为255,而byte2 1和byteResult分配给254,然后转换为byte 0xFE?然后检查if条件?请详细帮助对我很有帮助。对不起,如果我的问题含糊不清! 在这里,我找到了一些东西但不是我想要的东西。 Java Byte comparison

1 个答案:

答案 0 :(得分:2)

不会将字节转换为int。

来自JLS 5.2 Assignment Conversion

  

另外,如果表达式是常量表达式(§15.28)   输入 byte ,short,char或int: - 缩小基元转换   如果变量的类型是byte,short或char,则使用   常量表达式的值可以在类型中表示   变量

同时检查 subtracting 2 bytes makes int?

这是Java编程的基本前提。除非专门转换为其他类型,否则所有整数都是int类型。因此,使用整数进行的任何算术都会自动将所有操作数从“较窄”类型(字节,短)“提升”为int类型,而使用int操作数的算术结果始终为int。 (我想我现在已经把它打死了。)

如果您希望算术的短结果有两个字节,请执行以下操作:

short result = (short) (byte1 - byte2)

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