黑马程序员技术交流社区
标题:
求解装箱问题
[打印本页]
作者:
山鹰
时间:
2013-5-26 15:16
标题:
求解装箱问题
本帖最后由 山鹰 于 2013-5-26 18:32 编辑
public class Demo {
public static void main(String[] args) {
Integer n = 3; //自动装箱
Integer n1 = new Integer(3);//手动装箱
System.out.println(n==n1);//手动装箱和自动装箱的两个同类型值比较怎么结果是false??
Integer s = new Integer(5);//手动装箱
Integer s1 = new Integer(5);
System.out.println(s==s1);//两个自动装箱的值比较是true,两个手动装箱的值比较是false???
Integer k = 6;//自动装箱
Integer k1 = 6;
System.out.println(k==k1);//true
}
}
作者:
王靖远
时间:
2013-5-26 15:25
==比的是地址值。你前两个都是在堆内存开辟了2个空间。 自动装箱开辟了一个空间,只不过k和k1都指向这个空间的地址值。
作者:
x378320002
时间:
2013-5-26 15:47
楼主,自动装箱和手动装箱的区别在于一个字节以内,也就是-128~127,在这之内的数,两个自动装箱,第二个不会开辟新的,手动的是不管多大数都会开辟新空间,
你把6改成大于127的试试,就是false
作者:
山鹰
时间:
2013-5-26 18:32
x378320002 发表于 2013-5-26 15:47
楼主,自动装箱和手动装箱的区别在于一个字节以内,也就是-128~127,在这之内的数,两个自动装箱,第二个不 ...
自动装箱每次都开辟新的空间 这就明白了 谢谢
作者:
First
时间:
2013-5-26 19:21
本帖最后由 First 于 2013-5-26 19:29 编辑
这是我问的问题,2楼和3楼都给出了较为全面的答案。
基本上就是同一个问题
==比较问题
http://bbs.itheima.com/thread-51685-1-1.html
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2