工作随笔—integer对象比较

问题:对于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这个范围内是直接取值,不是创建值,所以值总是相等;当时超过了这个范围,创建了新的地址,当然就不相等了。

猜你喜欢

转载自blog.csdn.net/qq_36196879/article/details/86557055