温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

在Java中怎么判断两个Long对象是否相等

发布时间:2021-07-09 13:35:36 来源:亿速云 阅读:337 作者:chen 栏目:开发技术

这篇文章主要介绍“在Java中怎么判断两个Long对象是否相等”,在日常操作中,相信很多人在在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()方法

总结:

某包装类Xxx转为对应的基本数据类型时,则调用xxxValue()方法。

到此,关于“在Java中怎么判断两个Long对象是否相等”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI