A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 纪艺松 中级黑马   /  2012-12-15 19:45  /  1183 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Integer a = 100;
Integer b =100;
System.out.println(a==b)........true


Integer a = 1000;
Integer b =1000;

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

求解释

3 个回复

倒序浏览
在JDk1.5以后,当a和b指向的是同一个Integer对象,且该对象的数值在Byte范围以内(-128到127),就不会再在内存中开辟新空间,将引用同一个地址,用“==”实际是进行地址值的比较,所以为ture。
当两个对象的值为1000时,因为超过了Byte的范围,所以会再开辟新的空间,新的空间具有新的地址,该地址值和原有地址值不同,所以结果为false。
回复 使用道具 举报
楼上正解...jdk的开发人员也是基于内存考虑的....-128---127比较常用...所以Integer对象在这个范围内是同一个对象...
回复 使用道具 举报
楼上两位都回答对了,我就打打酱油了。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马