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对象是否相等”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

文章标题:Java如何判断两个Long对象是否相等,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/20913

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云认证作者
上一篇 2022年8月27日 下午4:50
下一篇 2022年8月27日 下午4:52

相关推荐

  • windows xbox控制台如何打开

    xbox控制台打开方法: 1、打开菜单,然后在目录中找到X开头的字母,即可找到Xbox控制台小帮手。 2、在搜索框中搜索xbox,即可找到“Xbox 控制台小帮手”进行打开。 3、打开Xbox后,在主界面中,点击“以后再说,我想使用Xbox主机小帮手应用”后即可进入登录界面。 4、这个时候,我们需要…

    2022年9月22日
    79600
  • css如何使用​禁用鼠标事件

    禁用鼠标事件 CSS3 新增的 pointer-events 让你能够禁用元素的鼠标事件,例如,一个连接如果设置了下面的样式就无法点击了。 .disabled { pointer-events: none; } 关于“css如何使用禁用鼠标事件”这篇文章就分享到这里了,希望以上内容可以对大家有一定的…

    2022年9月1日
    47300
  • MySQL优化器hash join怎么使用

    前言 数据库的优化器相当于人类的大脑,大部分时候都能做出正确的决策,制定正确的执行计划,走出一条高效的路,但是它毕竟是基于某些固定的规则、算法来做的判断,有时候并没有我们人脑思维灵活,当我们确定优化器选择执行计划错误时该怎么办呢,语句上加hint,提示它选择哪条路是一种常见的优化方法。 我们知道Or…

    2022年9月15日
    63400
  • piwigo v2.9.5的5个sql注入分别是怎样的

    0x0 项目介绍 项目地址:https://github.com/Piwigo/Piwigo 项目介绍:piwigo是用于网络的开源照相馆软件。 专为组织,团队和个人管理您的照片库而设计。 官网地址:piwigo.org 0x1 准备工作 Linux下下载https://github.com/Piw…

    2022年9月26日
    51800
  • mysql的concat()函数如何用

    在mysql中,concat()函数用于将两个或多个字符串拼接成一个字符串并返回,语法为“CONCAT(string1,string2, … );”;该函数需要至少一个参数,否则会引起错误。concat()函数在拼接之前会将所有参数转换为字符串类型;如果任何参数为NULL,则CONCAT…

    2022年9月21日
    68300
  • 如何实现C++程序释放后使用导致的漏洞分析

    1、释放后使用 当动态分配的内存释放时,该内存的内容是不确定的,有可能保持完整并可以被访问,因为什么时候重新分配或回收释放的内存块是内存管理程序决定的,但是,也可能该内存的内容已经被改变,导致意外的程序行为。因此,当内存释放之后,保证不再对它进行写入或读取。 2、 释放后使用的危害 由内存管理不当导…

    2022年9月20日
    45800
  • ai如何转曲文件

    ai转曲文件的方法: 1、首先双击桌面的ai软件,然后打开。 2、之后去点击任务选项栏中的“选择”。 3、点击弹出菜单中的“全部”。 4、之后点击任务选项中的“文字”。 5、点击文字下面的“创建轮廓”即可。 以上就是“ai如何转曲文件”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很…

    2022年9月1日
    1.7K00
  • 如何分析web漏洞利用中的弱口令

    一,定义 弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。弱口令指的是仅包含简单数字和字母的口令,例如“123”、“abc”等,因为这样的口令很容易被别人破解,从而使用户的计算机面临风险,因此不推荐用户使用…

    2022年9月24日
    1.6K00
  • 使用Lombok @Builder注解导致默认值无效怎么解决

    @Builder注解导致默认值无效 使用Lombok注解可以极高的简化代码量,比较好用的注解除了@Data之外,还有@Builder这个注解,它可以让你很方便的使用builder模式构建对象,但是今天发现@Builder注解会把对象的默认值清掉。 像下面这段代码,会导致对象的name属性变为null…

    2022年8月29日
    1.8K00
  • windows浩辰cad看图王模糊怎么解决

    解决方法: 方法一: 1、如果我们的图纸与软件版本相差太大,可能会导致打开图纸模糊的问题。 2、大家如果使用的是新版的cad软件,那么建议也下载最新的浩辰cad看图王。 方法二: 1、如果我们的软件版本没有问题,那么可能是内存不足导致的。 2、因为如果加载的图纸较大的话,就需要很大的缓存空间来加载。…

    2022年9月21日
    59300
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部