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

rxi*_*xin 18 java

Double有Double.compare用于比较两个双基元.为什么Integer没有?

我知道写一些微不足道的代码,但要求好奇心.

编辑:我意识到Integer和Double都有比较.但是使用compareTo需要在Integer对象中装入int原语,这会有相当高的成本.此外,inta> intb与compare(inta,intb)不同,后者返回+1,0或-1,而前者为true/false ....

Pre*_*ton 19

这是Java 7将解决的疏忽

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值.返回的值与返回的值相同:

Integer.valueOf(x).compareTo(Integer.valueOf(y))
Run Code Online (Sandbox Code Playgroud)

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


zw3*_*324 6

compareDouble具有相同的效果:

new Double(d1).compareTo(new Double(d2))
Run Code Online (Sandbox Code Playgroud)

这意味着它需要NaN,+0-0考虑到(引用文档compareTo()):

  • Double.NaN被此方法视为等于其自身并且大于所有其他double值(包括Double.POSITIVE_INFINITY).
  • 该方法认为0.0d大于-0.0d.

由于整数没有NaN,都+0-0只会被视为0,是不是真正需要的功能,这样的方法.