欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

工作随笔—integer对象比较

程序员文章站 2022-07-11 11:11:35
问题:对于integer对象,当比较2=2的时候,返回的值是true还是false?当比较2000=2000的时候,返回的值是true还是false? 回答:当比较2=2的时候,返回的值是true;当比较2000=2000的时候,返回的值是false。 理由:equal比较是两个值的大小是否能够相等 ......

问题:对于integer对象,当比较2=2的时候,返回的值是true还是false?当比较2000=2000的时候,返回的值是true还是false?

回答:当比较2=2的时候,返回的值是true;当比较2000=2000的时候,返回的值是false。

理由:equal比较是两个值的大小是否能够相等;“=”比较是两个值的地址是否相等,参考integer的api文档,我们可以发现integer内部维护了一个缓存池,当值的范围是-128到127的时候,integer总是到缓存池里面去取值;当超过了这个范围,integer才会去new新的对象。所以在-128到127这个范围内是直接取值,不是创建值,所以值总是相等;当时超过了这个范围,创建了新的地址,当然就不相等了。