首页 > 解决方案 > 如何比较整数和双包装?

问题描述

Integer i = 1000;
Double d = 1000.0;

??

有没有办法让我在不展开或强制转换的情况下比较这两个包装器中的数值?

我不能使用 == 或 .equals() 因为它们比较引用相等。我也不能使用 Integer.compare(i,d) 或 i.compareTo(d) 因为它们有不同的类型。

提前感谢您回答新手问题。

编辑:将 d.compareTo(i) 更改为 i.compareTo(d) 因为它是一个 Integer 方法。

标签: java

解决方案


请参考这里https://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#compare(double,%20double)

您可以使用Double.compare(param1, param2)

Integer a = 1000;
Double b = 1000.0;
System.out.println(Double.compare(a, b) == 0);

正如@Andy 所告知的,这是实际流程

整数将被拆箱为 int,然后加宽为两倍。这里没有从 Integer 到 Double 的转换。


推荐阅读