黑马程序员技术交流社区

标题: 求解装箱问题 [打印本页]

作者: 山鹰    时间: 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