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
该compare在Double具有相同的效果:
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,是不是真正需要的功能,这样的方法.