一个奇妙的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号用户之后出问题了,用户自己发的帖子显示的却是转发的。
相关文章推荐
- java反射详解
- (一)问候Struts2
- SpringMvc学习与使用
- 关于Java中Scanner对象的hasNext()方法对实现Readable接口的对象中的read()方法调用的探讨
- Java单元测试(Junit+Mock+代码覆盖率)
- Eclipse-----Eclipse中SVN过滤提交
- 实习面经--阿里 java研发 v1
- java--同步的前提
- Java快速失败和安全失败
- eclipse安装m2e.sourcelookup插件debug第三方源码(spring)
- 排序算法java 四 -- 冒泡排序、选择排序
- java I/O (二)——对象序列化
- java 怎么判断文本内容的编码格式
- Java ThreadPool
- 21045308刘昊阳 《Java程序设计》第十周学习总结
- JAVA多线程之当一个线程在执行死循环时会影响另外一个线程吗?
- 重新学javaweb ---- DbUtils
- 我的第二个springboot项目 web+freemarker
- java 中对对象的调用
- java输入输出