学习前我们先看一个笔者之前项目踩过的坑

public static void main(String[] args) {
Integer a = 127;
Integer b = 127;
System.out.println(a==b);//true
Integer c = 128;
Integer d = 128;
  System.out.println(c==d); //false
}

看到这个结果,有些人可能比较惊讶,我也很惊讶,还中过大招,这都是源码看的不仔细的结果

还是直接上截图:

这是Integer类的源码片段,翻译一下注释:该内部静态类在虚拟机初始化时会设置并保存IntegerCache.high值,默认是127

然后会将-128~127的值缓存下来作为自动装箱时使用(而无需再new出新的Integer对象),笔者当时遇到的问题是:比较两个

Integer的值时因为以前的习惯总是比较int值用==,想着int和Integer会自动拆装箱,所以也会比较值而非对象地址,更要命的是

本地测试的id值一般都不会超过100,结果用==操作符结果总为true,而生产环境的id值是1000+,自然判断为false

接下来再看Integer.valueOf()方法:上源码不用解释,再次遇到IntegerCache

接下来再看Integer类重写的equals方法,可以看到重写后equals比较的对象的内容,也就是比较值大小

接下来看另外一些方法:如果不想用equals方法比较值大小,也可以用intValue()方法作比较

Integer类常用方法比较简单,学习的时候关键是不要遗漏,理解到位,介绍就到这里

最新文章

  1. Python学习笔记(四)——编码和字符串
  2. Web前端之CSS_day3-4
  3. Java基础 —— HTML
  4. 小学生之深入C#
  5. asp.net 读取Excel文档
  6. python中mcmc方法的实现
  7. WPF中使用USERCONTROL
  8. 【FAQ系列】:DB服务器产生大量物理读问题优化思路
  9. C语言数据结构基础学习笔记——树
  10. win10个人助理conrtana软件能否支持用户反馈、后续优化
  11. ELMO模型(Deep contextualized word representation)
  12. .net中 登录 才能下载文件的方法 Response.WriteFile实现下载
  13. 【bzoj2007】 Noi2010—海拔
  14. 1100C NN and the Optical Illusion
  15. 第二章 向量(a)接口与实现
  16. python学习 day16 (3月21日)----(正则)
  17. 微信小程序 this.data与this.setData
  18. mysql性能优化-慢查询分析、优化索引和配置 (慢查询日志,explain,profile)
  19. poj 1825 Ants 水题
  20. hihocoder[Offer收割]编程练习赛19 D 相交的铁路线(树上路径交)

热门文章

  1. 记录一下webpack好用的node模块
  2. python模块:typing
  3. 最佳实践:阿里云VPC、ECS支持IPv6啦!
  4. 陈云pytorch学习笔记_用50行代码搭建ResNet
  5. 1.RabbitMQ介绍
  6. DLL注入技术之依赖可信进程注入
  7. Openstack-L 路由注入方式
  8. class5_Radiobutton 选择按钮(选项选择)
  9. Rabbit MQ 客户端 API 进阶
  10. QTableWidget学习