概述
这个问题在之前看到过的一个博客有说过,我也得到一定提示。非常有意思。
首先我们要理解Integer是int基本数据类型的封装类,也就是创建时应该是创建一个引用,并将引用指向这个对象。将真正数值存储在堆栈中,而且真正指向这个对象。
从这里可以看出来了。当定义两个个Integer对象为-128到127中时,其实是不会创建新的引用的的,但是当超过这个范围后,就会创建一个新的引用,由于引用指向的地址都是不同的,所以两个比较的地址不同,所以返回结果自然是false。
源码如下:
其中low为-128,high为127.
这个题其实论述的是java在Integer中的拆箱装箱问题。所以在使用基本数据类型的封装类时,如果需要比较,最好使用equal()来实现。
最后
以上就是细心羊为你收集整理的2. 如果两个Integer的值相等,使用==进行判断的结果是否相等(常量池问题)?的全部内容,希望文章能够帮你解决2. 如果两个Integer的值相等,使用==进行判断的结果是否相等(常量池问题)?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复