一尘不染

Java Integer compareTo()-为什么要使用比较与减法?

java

我发现该方法的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;

阅读 812

收藏
2020-03-11

共1个答案

一尘不染

这是由于整数溢出。当thisVal非常大且anotherVal为负数时,则从前者中减去后者会产生大于thisVal可能溢出至负数范围的结果。

2020-03-11