我发现该方法的java.lang.Integer实现compareTo如下所示:
java.lang.Integer
compareTo
public int compareTo(Integer anotherInteger) { int thisVal = this.value; int anotherVal = anotherInteger.value; return (thisVal<anotherVal ? -1 : (thisVal==anotherVal ? 0 : 1)); }
问题是为什么使用比较而不是减法:
return thisVal - anotherVal;
这是由于整数溢出。当thisVal非常大且anotherVal为负数时,则从前者中减去后者会产生大于thisVal可能溢出至负数范围的结果。
thisVal
anotherVal