如何比较long值等于Long值

Chi*_*esh 12 java

long a = 1111;
Long b = 1113;

if(a == b)
{
    System.out.println("Equals");
}else{
    System.out.println("not equals");
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢你

Ale*_*exR 28

首先,您的代码未编译.线长b = 1113;

是错的.你不得不说

Long b = 1113L;
Run Code Online (Sandbox Code Playgroud)

第二,当我修复了这个编译问题时,代码打印出"不等于".


Jig*_*shi 10

它按预期工作,

尝试检查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");
        }
    }
Run Code Online (Sandbox Code Playgroud)

版画

not equals 为了我

使用compareTo()比较长,==在所有的情况下,西港岛线不行就值缓存

  • @AlexR Auto*un*拳击.如果它自动装箱"1234L"和"Long.valueOf(1234L)"*可能*不相等.与引用一样,如果`b`为'null`,它就会爆炸.(哦和大写-L后缀是首选,因为它很难误解为1.) (2认同)
  • longs无法与==进行比较.该理论指出,你需要使用一个简单的技巧,比如从另一个中减去一个并看到相关的差异. (2认同)

bar*_*ddu 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");
Run Code Online (Sandbox Code Playgroud)