高防服务器

Java如何判断两个Long对象是否相等


Java如何判断两个Long对象是否相等

发布时间:2022-05-11 13:50:00 来源:高防服务器网 阅读:71 作者:iii 栏目:安全技术

这篇文章主要介绍“Java如何判断两个Long对象是否相等”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java如何判断两个Long对象是否相等”文章能帮助大家解决问题。

抛出问题:

Long a = 4l;  Long b = 4l;  a == b //true
Long a = 128l;  Long b = 128l;  a == b //false

如果Long的值在[-127,128]之间,用“==”判断是否相等是没问题的,如果不在这个区间,是不能用“==”的,原因如下源码解释:

public static Long valueOf(long l) {          final int offset = 128;          if (l >= -128 && l <= 127) { // will cache              return LongCache.cache[(int)l + offset];          }          return new Long(l);      }

如果不在[-127,128]之间,则会new一个新对象,自然“==”两个不同的对象,其结果必然是false了。

解决方案:

1、使用Long中的longValue()进行转换
Long a = 128l;  Long b = 128l;  a.longValue() == b.longValue() //true
2、使用Long中的equals()
Long a = 128l;  Long b = 128l;  a.equals(b);//true

下面是该方法源码:

public boolean equals(Object obj) {          if (obj instanceof Long) {              return value == ((Long)obj).longValue();          }          return false;      }

两个Long类型比较存在的坑

一般来说,两个基本数据类型比较用 “==” 就可以了,平时很少用Long类型比较。

但是最近写项目时遇到了两个Long类型比较,当时也是直接用的双等于,然而当debug时却发现代码执行到这两个Long类型比较判断时并没有进入这个判断体内,然后上网搜索相关的问题, 其实很简单,但是不知道的话就很很容易入坑。

解决方法具体如下:

可以让两个Long类型的变量分别调用 ==longValue()== 方法来实现就可以了。

代码:

Long a=...;  Long b=...;  if (a.longValue() == b.longValue()) {               ...;  }

其实Long是java数据包装类的一种,以上属于包装类Long转化为基本数据类型long的情况,以下列举其它数据包装类拆箱转化为基本数据类型的情况:

Integer转为int,需要调用intValue()方法

Double转为double,需要调用doubleValue()方法

Float转为float,需要调用floatValue()方法

关于“Java如何判断两个Long对象是否相等”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注高防服务器网行业资讯频道,小编每天都会为大家更新不同的知识点。

[微信提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]
[