我发现compareTo
方法的java.lang.Integer
实现如下所示:
public int compareTo(Integer anotherInteger) {
int thisVal = this.value;
int anotherVal = anotherInteger.value;
return (thisVal<anotherVal ? -1 : (thisVal==anotherVal ? 0 : 1));
}
问题是为什么使用比较而不是减法:
return thisVal - anotherVal;
发布于 2010-04-28 19:02:18
这是由于整数溢出造成的。当thisVal
非常大并且anotherVal
为负时,从前者中减去后者得到的结果比thisVal
大,这可能会溢出到负值范围。
发布于 2010-04-28 20:03:59
简单地说,int
类型不足以存储两个任意int
值之间的差异。例如,15亿和-15亿之间的差值是30亿,但int
的值不能大于21亿。
发布于 2010-04-28 19:02:50
也许这是为了避免溢出/下溢。
https://stackoverflow.com/questions/2728793
复制相似问题