专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Java相关

为什么int a=10 与Integer b=new Integer(10) 相等?该如何处理

发布时间:2010-06-05 13:56:35 文章来源:www.iduyao.cn 采编人员:星星草
为什么int a=10 与Integer b=new Integer(10) 相等?
在我的理解中 int a=10 ,变量a与数值10都是放在栈中
 而Integer b=new Integer(10) 的引用对象b是放在栈中,Integer(10)是放在堆中。b对象指向堆中的Integer(10)
那为什么输出a==b为true啊? ==判断的是引用地址与内容相等 可是,变量a与引用对象b引用的地址不同啊

------解决方案--------------------
有个东西叫做:自动拆箱。
Java code

public static void main(String[] args) {
        int a = 10;
        Integer b = new Integer(10);
        System.out.println(a == b);//这里实际上是:a == b.intValue()
    }

------解决方案--------------------
比较的是a和b指向的地址中的值
------解决方案--------------------
jdk1.5之后吧,基本类型的所对应的引用类型可以自动转换成基本类型与基本类型进行值比较
------解决方案--------------------
int a=10;
Integer b = new Integer(10); //这句等价于 Integer b = new Integer(a);
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: