[求助]java long与Long比较

leipengou 2010-04-20 09:42:33
long l = 1;
Long l1 = 1L;
Long l2 = new Long(1);
if (l == l1) {
System.out.println("ok1");
}

if(l1 == l2){
System.out.println("ok2");
}
如上代码,"ok1"可以理解,都在栈里;"ok2"有点疑问,l2不是在堆里吗,怎么也相等了?请指教.
...全文
929 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
leipengou 2010-04-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 leipengou 的回复:]
long l = 1;
Long l1 = 1L;
Long l2 = new Long(1);
if (l == l1) {
System.out.println("ok1");
}

if(l1 == l2){
System.out.println("ok2");
}
如上代码,"ok1"可以理解,都在栈里;"ok2"有点疑问,l2不是在堆里……
[/Quote]

不好意思,笔误
long l = 1;
Long l1 = 1L;
Long l2 = new Long(1);
if (l == l1) {
System.out.println("ok1");
}

if(l == l2){
System.out.println("ok2");
}
  • 打赏
  • 举报
回复
Long的比较要用equals
keeya0416 2010-04-20
  • 打赏
  • 举报
回复
呀 我还以为会拆箱呢
hbgzg3006 2010-04-20
  • 打赏
  • 举报
回复
我运行了,没有打印ok2
zjwilove4 2010-04-20
  • 打赏
  • 举报
回复
高版本环境 自动拆装箱
jacky花园 2010-04-20
  • 打赏
  • 举报
回复
长见识了
自动装箱和自动拆箱
是对于基本类型来说的
up
liwenso 2010-04-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 leipengou 的回复:]
重复下问题:
if(l == l2){
System.out.println("ok2");
}
如上代码,"ok1"可以理解,都在栈里;"ok2"有点疑问,l2不是在堆里……
[/Quote]

因为l是一个基本类型,当l和l2这个对象在一起比较时,l2会自动解箱,即l会和l2所指向的值做比较
leipengou 2010-04-20
  • 打赏
  • 举报
回复
重复下问题:
if(l == l2){
System.out.println("ok2");
}
如上代码,"ok1"可以理解,都在栈里;"ok2"有点疑问,l2不是在堆里……
zfq642773391 2010-04-20
  • 打赏
  • 举报
回复

long l = 1;
Long l1 = 1L;
Long l2 = new Long(1);
if (l == l1) {
System.out.println("ok1");
}

if(l == l2){
System.out.println("ok2");
}
if(l1 == l2){
System.out.println("ok3");
}

输出

ok1
ok2

62,624

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧