java - 如何比较整数和双包装?
问题描述
Integer i = 1000;
Double d = 1000.0;
??
有没有办法让我在不展开或强制转换的情况下比较这两个包装器中的数值?
我不能使用 == 或 .equals() 因为它们比较引用相等。我也不能使用 Integer.compare(i,d) 或 i.compareTo(d) 因为它们有不同的类型。
提前感谢您回答新手问题。
编辑:将 d.compareTo(i) 更改为 i.compareTo(d) 因为它是一个 Integer 方法。
解决方案
请参考这里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 的转换。
推荐阅读
- javascript - 我无法使用 xpath 和 IMPORTXML 访问网站中的数据,因为代码片段在源数据之外
- android - Azure DevOps Gradle“Java 堆空间”错误
- c++ - OpenGL地形系统,GPU与CPU高度差小
- google-analytics - 从多渠道漏斗转化谷歌分析中获取非转化路径
- kubernetes - 来自服务器的 K8s 错误(未找到):找不到 deployments.apps “nginx”
- node.js - 根据用户数据在 NestJS 中创建服务
- css - 从更通用的选择器继承值
- javascript - 无法从 Jmeter 上的数组中选择随机元素并将其放在 .sendKeys 上
- rust - 匿名函数 - 由于需求冲突,无法推断出合适的生命周期
- pipenv - Pipenv 在其他文件夹工作正常的机器上的一个空文件夹中一直失败