首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java Integer compareTo() -为什么使用比较和减法?

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

Stack Overflow用户
提问于 2010-04-28 18:59:45
回答 3查看 15K关注 0票数 86

我发现compareTo方法的java.lang.Integer实现如下所示:

代码语言:javascript
复制
public int compareTo(Integer anotherInteger) {
    int thisVal = this.value;
    int anotherVal = anotherInteger.value;
    return (thisVal<anotherVal ? -1 : (thisVal==anotherVal ? 0 : 1));
}

问题是为什么使用比较而不是减法:

代码语言:javascript
复制
return thisVal - anotherVal;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-28 19:02:18

这是由于整数溢出造成的。当thisVal非常大并且anotherVal为负时,从前者中减去后者得到的结果比thisVal大,这可能会溢出到负值范围。

票数 102
EN

Stack Overflow用户

发布于 2010-04-28 20:03:59

简单地说,int类型不足以存储两个任意int值之间的差异。例如,15亿和-15亿之间的差值是30亿,但int的值不能大于21亿。

票数 9
EN

Stack Overflow用户

发布于 2010-04-28 19:02:50

也许这是为了避免溢出/下溢。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2728793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档