JAVA中包装类型的数值比较问题
JAVA中包装类型的数值比较问题
JAVA中的包装类有:Integer、Long、Float、Double等等,下面我拿Long类型的做一个例子来解释
1、问题描述
在JAVA 中我们使用包装类Long进行比较时,经常会出现明明数值是一样的但就是不相等,就比如以下的这种情况:
结果如下:
2、原理解释
由下面的代码可以看出,
- 定义偏移量 offset 为 128。
- 如果 long 值 l 在 -128 到 127 范围内,则从缓存中返回对应的 Long 对象。
- 如果不在该范围内,则创建并返回一个新的 Long 对象。
故225!=225 因为不是同一个对象了
3、解决方法
可以使用.longValue()
或者.equals()
进行比较。
…(img-AzMNtJRG-1745486373791)]
完美解决!!!!