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

相关推荐

  • html是不是静态页面

    html是静态页面;html表示结构,css表示样式,由HTML与CSS制作的页面叫做静态页面,动态页面指的是动态数据的页面,而非模拟数据的页面,html网页当中的数据均为静态数据,当前端页面与后台整合之后,网页当中的数据是来源于数据库时,则称为动态页面。 本教程操作环境:windows10系统、H…

    2022年9月8日
    72400
  • C语言中for循环与while循环怎么使用

    一、单层for循环 引例:C语言实现求1到10的和(用for循环实现) #include <stdio.h>int main(){ int i, sum = 0; for (i = 1; i <= 10; i++) sum = sum + i; printf(“sum = %dn”…

    2022年9月15日
    77300
  • linux能不能获取本地ip地址

    linux能获取本地ip地址。方法:1、利用“ifconfig -a”命令,该命令用于显示或者设置网络设备信息;2、利用“ip address”命令,语法为“ip address | grep eth0 | awk ‘{print$2}’”;3、利用“hostname -I”…

    2022年6月29日
    4.6K00
  • windows会声会影导出视频mp4格式的方法

    会声会影导出视频mp4格式的方法 1、首先点击上方的“共享”。 2、点击右侧的“MPE4”。 3、我们可以在配置文件中更改视频具体参数。 4、然后修改文件名和渲染解码方式。 5、最后点击右边的文件夹选择保存路径,点击“开始”开始导出。 6、等待渲染完成导出视频就可以了。 以上就是关于“windows…

    2022年9月15日
    61700
  • word怎么制作目录页

    word制作目录的方法: 1、首先将光标放到文档标题下方,然后选择菜单栏依次点击“引用-目录-插入目录”。 2、然后根据情况选择显示级别点击确定,级别的选择只要大于自己需需求都可以。 3、此时如果将光标放置到目录下方,选择“插入-分页”可以使目录和正文分成两页。 4、如果文章的内容发生了更改,会导致…

    2022年9月19日
    75500
  • mysql如何将日期转为数字

    2种将日期转为数字的方法:1、使用TO_DAYS()函数,可以将指定日期值转为代表天数的整数值,语法“TO_DAYS(指定日期值)”。2、使用TIME_TO_SEC()函数,可以将指定日期时间值转为代表秒数的整数值,语法“TIME_TO_SEC(指定日期时间值)”。 本教程操作环境:windows7…

    2022年9月21日
    1.1K00
  • 如何借助CSS 更好的控制定时器

    平时工作中很多场合都要用到定时器,比如延迟加载、定时查询等等,但定时器的控制有时候会有些许麻烦,比如鼠标移入停止、移出再重新开始。这次介绍几个借助 CSS 来更好的控制定时器的方法,一起了解一下吧,相信可以带来不一样的体验。 一、hover 延时触发 有这样一个场景,在鼠标停留在一个元素上1s后才触…

    2022年9月16日
    65500
  • 知识库搭建的关键点有哪些

    按照知识管理中心(Knowledge Management Center)的研究和咨询实践,知识库建设必须遵循以下核心关键点:1、界定核心知识;2、控制知识产出;3、知识内容的组织;4、知识的利用;5、知识的创新应用。 当然,在你正式开始搭建知识库之前,较好是有一个合适的在线企业知识库管理系统,我们…

    2022年3月18日
    87300
  • windows任务管理器磁盘100%怎么解决

    任务管理器磁盘100%分析及解决方法 原因及解决方法如下: 一、当Windows Defender进行扫描时,如果再进行其他的工作,磁盘占用率就达到了100%。 在搜索栏输入gpedit.msc打开组策略编辑器,定位到“计算机配置-管理模板-Windows组建-Windows Defender-扫描…

    2022年9月6日
    93100
  • windows浩辰cad看图王图形怎么填充颜色

    浩辰cad看图王图形填充颜色: 答:浩辰cad看图王没有图形填充功能。 1、浩辰cad看图王只能修改图纸的背景颜色。 2、通过修改背景颜色,可以让图纸的观感更加清晰。 3、只有在CAD本体软件中才能使用图形填充颜色。 4、下载安装完成后,打开软件,在下方命令中输入“H”,回车运行。 5、打开图案填充…

    2022年9月21日
    99900
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

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

分享本页
返回顶部