首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Java的Integer类没有compare()方法?

为什么Java的Integer类没有compare()方法?
EN

Stack Overflow用户
提问于 2011-08-03 02:53:14
回答 4查看 3.9K关注 0票数 18

Double具有用于比较两个double基元的Double.compare。为什么Integer没有?

我知道这是一些微不足道的代码要写,但出于好奇心而问。

编辑:我意识到整数和双精度都有compareTo。但是使用compareTo需要将int原语装箱到一个Integer对象中,这具有相当高的开销。此外,inta > intb与compare(inta,intb)不同,后者返回+1、0或-1,而前者为true/false ...

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-03 03:04:03

这是Java7将解决的一个疏忽

http://download.oracle.com/javase/7/docs/api/java/lang/Integer.html#compare%28int,%20int%29

public static int compare(int x,int y)

对两个int值进行数值比较。返回的值与将由以下命令返回的值相同:

代码语言:javascript
复制
Integer.valueOf(x).compareTo(Integer.valueOf(y))

参数:x-要比较的第一个int y-要比较的第二个int返回:如果x == y,则返回0;如果xy,则返回大于0的值: 1.7

票数 19
EN

Stack Overflow用户

发布于 2011-08-03 02:56:59

以这种方式比较整型数是微不足道的,比较双精度型实际上要比乍看起来复杂得多。您必须处理诸如错误值之类的事情,以及诸如NaN之类的不太明显的情况。

详情请参见this question

无论哪种方式,从Java7开始,您也将拥有这样一个用于int的方法!

票数 4
EN

Stack Overflow用户

发布于 2011-08-03 02:56:54

由于浮点表示中的不精确性,浮点值不一定是二进制比较的,因此,需要使用compare()运算符来比较两个浮点值,本质上确保它们之间的差异不大于(小)误差值。整数可以进行二进制比较,因此可以使用相等运算符。

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

https://stackoverflow.com/questions/6917077

复制
相关文章

相似问题

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