千家信息网

java中为什么int==Integer为true

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"java中为什么int==Integer为true"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能
千家信息网最后更新 2026年11月01日java中为什么int==Integer为true

本篇内容介绍了"java中为什么int==Integer为true"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

int==Integer为什么返回true

先看现象吧

执行下面的代码及输出结果:

int a = 1;Integer b = 1;Integer c = new Integer(1);System.out.println(a==b);//trueSystem.out.println(a==c);//trueSystem.out.println(b==c);//false

通常大家对此的解释是,==对于基本类型来说比较的是值,对于引用类型来说比较的是引用,即指向的对象的内存地址。这样解释没错,b==c结果为false毋庸置疑,因为两个都是引用类型。但是为什么a==b(a==c)一个是基本类型一个是引用类型,比较的时候还是值比较呢?

这个时候我们不妨把.java源文件编译后的.class文件使用反编译工具反编译成源码,看看虚拟机内部是如何处理a==b的。

.class文件使用jd-gui反编译后的:

int a = 1;Integer b = Integer.valueOf(1);Integer c = new Integer(1);System.out.println(a == b.intValue());System.out.println(a == c.intValue());System.out.println(b == c);

看到这想必大家都明白了吧,其实基本类型a和引用类型b比较时,引用类型b调用自身的intValue()方法获取Integer实际表示的int类型的值,即a == b.intValue()还是两个int类型的变量进行值比较。符合上述:==对于基本类型来说比较的是值,对于引用类型来说比较的是引用,即指向的对象的内存地址。

基本类型及引用类型在内存中的存储方式

说到这,还要解释下为什么两个引用类型的值一样而引用不一样以及基本变量为什么是值比较。

其实基本变量int a在内存里只有一份,保存在栈(保存基本类型的变量数据及引用类型的引用)中,Integer b和Integer c中的int值都指向栈中同一个int,不会重新在栈中创建相同的int值。

而对于Integer b和Integer c,其实例是保存在堆(保存所有new出来的对象)中,虽然表示的int值相同,但是在堆中有两份,每次new都会在堆中开辟一片空间保存new的内容,故Integer b和Integer c分别在两片不同的内存空间存储,所以指向的内存地址不同。

而对于Integer b = 1;其反编译后为Integer b = Integer.valueOf(1); 而valueOf()方法内部是调用了new。

JDK中Integer.valueOf()源码:

public static Integer valueOf(int i) {        if (i >= IntegerCache.low && i <= IntegerCache.high)            return IntegerCache.cache[i + (-IntegerCache.low)];        return new Integer(i);}

"java中为什么int==Integer为true"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

类型 内存 编译 变量 指向 两个 内容 地址 对象 解释 不同 相同 实际 文件 方法 时候 更多 源码 知识 空间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 广州紫鲸互联网科技有限公司 互联网金融监管科技数据 科技信息互联网 齐家互联网科技 深圳齐家互联网科技 佩信高科技互联网 互联网巨头投资的硬核科技 厦门比较好的科技互联网公司 黑科技闪耀互联网之光 如何创新互联网科技 西安小鹰速贷互联网科技有限公司 佛山市拉法互联网科技有限公司 深圳无忧互联网科技 广州有谷有贝互联网科技有限公司 北京天晋互联网科技有限公司 求路客互联网科技电话 互联网科技和医药行业 黑龙江互联网科技公司 银川新华互联网科技学校招聘 圆梦互联网科技 新华互联网科技学院 互联网科技卖菜 互联网科技宣传片 一五八零互联网科技 河南猎农互联网科技有限公司 黑科技闪耀互联网之光 九思连强互联网电子科技有限公司 重庆科技产业互联网有哪些 科技互联网企业在行动
0