我是靠谱客的博主 细心羊,这篇文章主要介绍2. 如果两个Integer的值相等,使用==进行判断的结果是否相等(常量池问题)?,现在分享给大家,希望可以做个参考。

这个问题在之前看到过的一个博客有说过,我也得到一定提示。非常有意思。

首先我们要理解Integer是int基本数据类型的封装类,也就是创建时应该是创建一个引用,并将引用指向这个对象。将真正数值存储在堆栈中,而且真正指向这个对象。

这里写图片描述

从这里可以看出来了。当定义两个个Integer对象为-128到127中时,其实是不会创建新的引用的的,但是当超过这个范围后,就会创建一个新的引用,由于引用指向的地址都是不同的,所以两个比较的地址不同,所以返回结果自然是false。

源码如下:
这里写图片描述

其中low为-128,high为127.

这个题其实论述的是java在Integer中的拆箱装箱问题。所以在使用基本数据类型的封装类时,如果需要比较,最好使用equal()来实现。

最后

以上就是细心羊最近收集整理的关于2. 如果两个Integer的值相等,使用==进行判断的结果是否相等(常量池问题)?的全部内容,更多相关2.内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部