黑马程序员技术交流社区
标题:
数据类型的问题
[打印本页]
作者:
李敬
时间:
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