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


        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号用户之后出问题了,用户自己发的帖子显示的却是转发的。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM