Java中两个Long对象如何比较是否相等

原创 2018年04月17日 08:24:15

抛出问题:

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;
    }

EJB商业探讨的白皮书

1 业界支持  任何一个商业化的技术要想拥有良好的市场态势,业界内重要企业的大量参与是十分重要的。J2EE是由SUN引导,各厂商共同发起的,并得到广泛认可的工业标准。业内企业计算领域的大企业如:IBM...
  • DrunkenLion
  • DrunkenLion
  • 2001-06-20 08:49:00
  • 660

Java中判断两个Long类型是否相等

开发中有遇到Long类型比较是否相等,比如Long A和Long B判断是否相等,当时习惯性的直接A==B;     自测的话确实么有问题,但是测试那边测试就有问题,当时郁闷了一下然后换成了A.e...
  • hxxanyifree
  • hxxanyifree
  • 2017-03-29 13:19:24
  • 15457

Java 对象之间的比较,判断两个对象的某一个属性相等,则对象相等

知识点:重写equals()方法 首先来看一些文字性的东西: 一、简单类型比较   Java中,比较简单类型变量用“==”,只要两个简单类型值相等即返回ture,否则返回false;  ...
  • chenxuejiakaren
  • chenxuejiakaren
  • 2012-08-07 14:29:21
  • 36327

两个 Long 类型为什么不能直接用==比较

这要说到==和 equals 的区别了。 1. ==比较的是两个对象在内存中的地址值(栈中的内容)。 2.equals 是 java.lang.Object 类的一个方法。equals 比...
  • SonoFelice_mm
  • SonoFelice_mm
  • 2016-04-01 20:42:38
  • 4021

Java中判断两个对象是否相等

在Java中我们如果想确定两个对象是否相等,有不少种方法,这里将会简要解释 对于基本数据类型,我们可以直接用“==”进行判断,相等则返回true,反之则返回false。 对与引用类型的比较 假设有两...
  • wyky481l
  • wyky481l
  • 2017-03-29 17:45:43
  • 3002

java比较自定义对象相等的方法

今天做java开发需要比较两个自定义的对象的大小,发现直接比较会有问题,先说明如下: 开始时对象是这样定义的: public class DataCompose { int length; ...
  • zhurui536
  • zhurui536
  • 2013-11-13 21:22:59
  • 2085

Java中如何判断两个对象是否相等(Java equals and ==)

原文:https://www.dutycode.com/post-140.html 如何判断两个对象相等,这个问题实际上可以看做是如何对equals方法和hashcode方法的理解。 ...
  • u013063153
  • u013063153
  • 2017-12-15 02:16:13
  • 1566

Java中判断两个lang类型是否相等问题

开发中有遇到Long类型比较是否相等,比如Long A和Long B判断是否相等,当时习惯性的直接A==B; 自测的话确实么有问题,但是测试那边测试就有问题,当时郁闷了一下然后换成了A.eq...
  • scgyus
  • scgyus
  • 2018-02-03 11:41:55
  • 87

深入java的equals方法,怎么比较两个对象的内容是否相等?对象的内容指的是什么?

检查对象是否相等关系运算符==和!=也适用于所有对象,但它们的含义通常会使初涉Java领域的人找不到北。下面是一个例子://: Equivalence.javapublic class Equival...
  • flash59
  • flash59
  • 2007-06-28 14:47:00
  • 1810

Long类型比较不能直接用等于

因为Long不是基本类型所以不能用=来比较是否相等要用.longValue()先转换成long才能做=比较...
  • sourny
  • sourny
  • 2016-01-20 17:34:19
  • 10837
收藏助手
不良信息举报
您举报文章:Java中两个Long对象如何比较是否相等
举报原因:
原因补充:

(最多只允许输入30个字)