2010-12-19 52 views
11
long a = 1111; 
Long b = 1113; 

if(a == b) 
{ 
    System.out.println("Equals"); 
}else{ 
    System.out.println("not equals"); 
} 

上面的代码在控制台中输出“equals”,这是错误的答案。我的问题是如何比较长变量值是否等于Long变量值。请尽快重播我。如何比较long值等于Long值

Thankh你

+7

此代码不会编译。第二行需要很长的值,并且您提供了一个int。它应该是长b = 1113L;即便如此,它确实打印出正确答案。 – 2010-12-19 16:01:40

回答

26

首先你的代码没有编译。 Long b = 1113;

是错误的。你不得不说

Long b = 1113L; 

其次,当我解决了这个问题汇编代码印有“不等于”。

9

它按预期工作,

尝试检查IdeOneDemo

public static void main(String[] args) { 
     long a = 1111; 
     Long b = 1113l; 

     if (a == b) { 
      System.out.println("Equals"); 
     } else { 
      System.out.println("not equals"); 
     } 
    } 

打印

not equals

使用compareTo()来比较长,==将无法​​在所有情况下工作,只要值被缓存

+1

你说得对,但在这种情况下并不重要。 Autoboxing完成其工作。 – AlexR 2010-12-19 16:05:20

+2

@AlexR Auto * un *装箱。如果自动复制'1234L'和'Long.valueOf(1234L)'*可能不相等。与引用一样,如果'b'为'null',它就会爆炸。 (哦,大写L后缀是首选,因为很难误认为1)。 – 2010-12-19 18:58:59

+2

longs不能与==比较。该理论指出,你需要使用一个简单的技巧,比如从另一个中减去一个,并查看相关的差异。 – hephestos 2012-12-26 14:28:06

7
long a = 1111; 
Long b = new Long(1113); 

System.out.println(b.equals(a) ? "equal" : "different"); 
System.out.println((long) b == a ? "equal" : "different"); 
3

一方面long是一个对象,另一方面long是一个原始类型。为了比较它们,你可以得到基本类型出长型:

public static void main(String[] args) { 
    long a = 1111; 
    Long b = 1113; 

    if ((b!=null)&& 
     (a == b.longValue())) 
    { 
     System.out.println("Equals"); 
    } 
    else 
    { 
     System.out.println("not equals"); 
    } 
} 
1

我将分享如何做呢,因为Java的7 -

Long first = 12345L, second = 123L; 
System.out.println(first.equals(second)); 

输出返回:匹配的假

和第二个例子是 -

Long first = 12345L, second = 12345L; 
System.out.println(first.equals(second)); 

输出返回:真

所以,我相信等于比较对象的值的方法,希望它可以帮助你,谢谢。

0
public static void main(String[] args) { 
     long a = 1111; 
     Long b = 1113L; 
     if(a == b.longValue()) 
    { 
     System.out.println("Equals"); 
    }else{ 
     System.out.println("not equals"); 
    } 
    } 

or: 

    public static void main(String[] args) { 
     long a = 1111; 
     Long b = 1113L; 
     if(a == b) 
    { 
     System.out.println("Equals"); 
    }else{ 
     System.out.println("not equals"); 
    } 
    }