Integer n=2;
Integer m=2;
System.out.println(new String().valueOf(m==n));竟然输出"true"== 不是判断对象引用是否相同的吗?难道m和n的对象引用是一样的吗?
Integer m=2;
System.out.println(new String().valueOf(m==n));竟然输出"true"== 不是判断对象引用是否相同的吗?难道m和n的对象引用是一样的吗?
楼主【anhulife】截止到2008-07-11 10:12:08的历史汇总数据(不包括此帖):
发帖的总数量:1 发帖的总分数:0 每贴平均分数:0
回帖的总数量:2 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:1 未结的总分数:0
结贴的百分比:0.00 % 结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
Integer n=2;
Integer m=2;
是对n和m赋值 没涉及到引用对象。
Integer n= new Integer(2);
Integer m= new Integer(2);
System.out.println(new String().valueOf(m==n));
结果 false;
Integer m=2;
这里是等的。这样的申明会促使进行boxing的操作,就是说会自动包装成对象,所以这里m和n所指向的都是一个包装了的对象。不过有一点特殊就是。如果这个大小在-128~127之间的话,他们都会使用同一个对象。如果超出这个范围,他们会自己构建各自的对象,然后就不等了。例如Integer n=128;
Integer m=128;
这里就不等!!!
迷惑了。。== 内存中的引用比较equals 内存中的值比较=赋值
~~~~~~~~
恩 UP~~开始没想到这个问题如果用equals比就没有这个区间的考虑了。。
顶下5楼
这个是在看自动包装器和打包的时候发现的。
看来Java基础里还有好多待研究的东西。