我发现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的结果,后者可能会溢出到负数范围。

10-04 19:45