您的位置:首页 > 编程语言 > Java开发

一个奇妙的java坑:Long 类型的比较

2016-05-07 11:44 253 查看
Long userId=127L;
Long authorId=127L;
System.out.println(userId==authorId);//true
userId=128L;
authorId=128L;
System.out.println(userId==authorId);//false
Long x=new Long(127);
Long y=new Long(127);
System.out.println(x==y);//false
System.out.println(x.equals(y));//true


Long是引用类型,要比较两个Long的大小,一定要用equals而不能用==

但是,当Long为常量且常量值小于一个字节时,两个Long指向同一个常量内容;

当Long为常量且常量值大于一个字节时,两个Long指向不同的常量内容。

最后总结,引用比较一定要用equals而不要用==

这个问题有多重要,在此说明一下。

我跟同学上线了一个话题帖子交流系统app,帖子是不是转发的通过帖子的用户Id与帖子的作者Id进行判等。到了127号用户之后出问题了,用户自己发的帖子显示的却是转发的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: