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