在项目中将两个long类型的值比较是否相等,结果却遇到了疑问?

下面就陪大家看看一个神奇的现象!

1.1问题?为什么同样的类型,同样的值,却不相等呢?

1.2那么我们就需要探索一下源码了

源码中显示,Long中有一个静态的内部类LongCache,专门用于缓存-128至127之间的值,一共256个元素。

如果值在[-128, 127]之间,会放在缓存里面,而超过这个范围就要new一个新的对象,也就是说==不能判断对象是否相等。当然,如果值是在[-128, 127]之间的话是测不出来什么问题的。

1.3解决方案!

可以使用.longValue() 或者..equals()进行比较。

1.4最佳解决方案为 .eques()   我们可以先看.eques()的源码。

它是先通过.longValue()方法获取Long对象的基本类型long的值之后再做比较的。我们用longValue会比较容易忘记后面一个包装类调longValue方法。

所以所我们最好用.eques()方法,当然也可以用.longValue()的!

最新文章

  1. 安装好android的adt以后重启eclipse,但是没有创建AVD的图标
  2. android 学习随笔五(界面)
  3. Sqoop导入MySQL数据
  4. 为operamasks增加HTML扩展方式的组件调用
  5. 如何申请TexturePacker注册码
  6. KMP算法初探
  7. UML视图(九)部署图
  8. NPOI读取Excel表格类
  9. page-object使用(2)---elements
  10. SCGHR 系统设计
  11. MSSQL - 存储过程事物
  12. ADO.NET之使用DataSet类更新数据库
  13. 【51nod1847】 奇怪的数学题
  14. PHP错误:Namespace declaration statement has to be the very first statement in the script
  15. ODAC(V9.5.15) 学习笔记(四)TOraDataSet
  16. Java 虚拟机(JVM)
  17. 为什么要有GDT
  18. android adb端口被占用解决方法
  19. 死磕salt系列-salt 常用modules
  20. Nginx源码完全注释(5)core/ngx_cpuinfo.c

热门文章

  1. 网络协议及socket
  2. 剑指offer38:输入一棵二叉树,求该树的深度
  3. codeforces 1251D Salary Changing (二分+贪心)
  4. LeetCode. 位1的个数
  5. Do Not Try This Problem(分块思想)
  6. 落网数据库简单查询接口 caddy+php7+mongodb
  7. Python 【Debug排除程序故障】
  8. Pygame小游戏练习二
  9. thymeleaf 模板使用 提取公共页面
  10. 基于AccessToken方式实现API设计