比较java中的Long值

PSR*_*PSR 8 java

可能重复:
java中允许的Integer == int

以下两个陈述之间有什么区别

Long l1 = 2L;
if(l1 == 2)
    System.out.println("EQUAL");                         
if(l1.longValue() == 2)
    System.out.println("EQUAL");
Run Code Online (Sandbox Code Playgroud)

他们两个都给出了相同的结果"EQUAL".但我怀疑龙是对象.它是如何平等的?

Xav*_*ica 11

正如评论中已经指出的那样

if(l1 == 2)
Run Code Online (Sandbox Code Playgroud)

Long l1自动取消装箱到其原始类型,long.所以比较是在long和之间int.

在第二种情况下,l1.longValue()将返回由对象表示的long值作为基元,因此比较将在和之间再次进行.回答你的评论,看一下原始类型和包装类之间的主要区别是什么?LongLonglongint

关于自动装箱的评论中给出的链接很好地涵盖了这个主题.