首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

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

2012-02-23 
为什么int a10 与Integer bnew Integer(10) 相等?在我的理解中 int a10 ,变量a与数值10都是放在栈中而I

为什么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);

热点排行