黑马程序员技术交流社区

标题: 数据类型的问题 [打印本页]

作者: 李敬    时间: 2012-8-11 05:22
标题: 数据类型的问题
                int i = 123;
                Integer i1 = 123;
                Integer i2 = 123;
                Integer i3 = new Integer(123);
                Integer i4 = new Integer(123);
                System.out.println(i1 == i2);//true
                System.out.println(i3 == i4);//false
                System.out.println(i2 == i4);//false
                System.out.println(i == i2);//true
                System.out.println(i == i4);//true
这些东西每次看到都犯困,好不容易死记下来,下次再看到还是迷糊,哪位同学能简短的总结下这里面的知识点,他们的关系与区别?越短越好,一看就明白,不容易忘得.

作者: 尤洋    时间: 2012-8-11 07:22
System.out.println(i1 == i2);//true  因为Integer 在byte类型数据范围实现了常量池技术,所以自动加包后,-128到127范围内对应的是同一个对象。
System.out.println(i3 == i4);//false 因为使用了new操作,产生了新的对象,所以为false。
System.out.println(i2 == i4);//false 同样也是因为new操作产生新的对象,导致两者对应的不是同意个对象,所以为false。
System.out.println(i == i2);//true  Integer有自动加包和解包的功能,当与基本类型数据比较时,会自动解包,此时相当于两个数字的比较,所以为true。
System.out.println(i == i4);//true  原因同第四个。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2