黑马程序员技术交流社区

标题: 包装器的一点疑问 [打印本页]

作者: 纪艺松    时间: 2012-12-15 19:45
标题: 包装器的一点疑问
Integer a = 100;
Integer b =100;
System.out.println(a==b)........true


Integer a = 1000;
Integer b =1000;

System.out.println(a==b)........false

求解释
作者: 焦健    时间: 2012-12-15 19:58
在JDk1.5以后,当a和b指向的是同一个Integer对象,且该对象的数值在Byte范围以内(-128到127),就不会再在内存中开辟新空间,将引用同一个地址,用“==”实际是进行地址值的比较,所以为ture。
当两个对象的值为1000时,因为超过了Byte的范围,所以会再开辟新的空间,新的空间具有新的地址,该地址值和原有地址值不同,所以结果为false。
作者: 黑马黄涛    时间: 2012-12-15 20:18
楼上正解...jdk的开发人员也是基于内存考虑的....-128---127比较常用...所以Integer对象在这个范围内是同一个对象...
作者: 高会仁    时间: 2012-12-16 00:51
楼上两位都回答对了,我就打打酱油了。。。




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