The implementation of Integer.compare
does not use subtraction, as this could cause an overflow in case you're comparing an integer that is close to Integer.MIN_VALUE
with another that is close to Integer.MAX_VALUE
.
This overflow cannot happen in case of Byte.compare
, as there the byte values are implicitely converted to integers before x-y
is calculated.
(see also: Java Language Specification - 5.6.2 Binary Numeric Promotion)