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

概述

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

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

这里写图片描述

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

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

其中low为-128,high为127.

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

最后

以上就是细心羊为你收集整理的2. 如果两个Integer的值相等,使用==进行判断的结果是否相等(常量池问题)?的全部内容,希望文章能够帮你解决2. 如果两个Integer的值相等,使用==进行判断的结果是否相等(常量池问题)?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部