黑马程序员技术交流社区
标题:
Integer 包装类的实例进行比较
[打印本页]
作者:
庄星睿
时间:
2012-6-12 13:28
标题:
Integer 包装类的实例进行比较
Integer 包装类的实例进行比较,分享一下:
两个超过bye[]类型的数值就不相等
Integer ina=2;
Integer inb=2;
System.out.println(ina==inb); //true
Integer inc=128;
Integer ind=128;
System.out.println(inc==ind); //false
复制代码
这与java的Integer类的设计有关,查看一下java系统中java.lang.Integer类的源代码
static final Integer[] catch=new Integer[-(-128)+127+1];
static
{
for(int i=0;i<catch.length;i++)
catch[i]=new Integer(i-128);
}
复制代码
系统把-128~127之间的整数自动封装成Integer对象,并放入了一个名为catch的数组中缓存起来。如果以后把一个-128~127之间的整数自动装箱成一个Integer对象时,实际上是直接指向对应的数组元素,因此-128~127之间的同一个整数自动装箱成Integer实例时,永远都是引用catch数组的同一个数组元素,所以它们相等;但每次把一个不在-128~127范围内的整数自动装箱成Integer实例时,系统总是重新创建一个Integer实例,所以会出现程序中的运行结果。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2