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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© loading……99.9 中级黑马   /  2013-10-8 14:18  /  1328 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 loading……99.9 于 2013-10-8 18:48 编辑

System.out.println(Integer.valueOf(127) == Integer.valueOf(127));
System.out.println(Integer.valueOf(128) == Integer.valueOf(128));
输出结果,why?

评分

参与人数 1技术分 +1 收起 理由
黄文伯 + 1 支持一下

查看全部评分

3 个回复

倒序浏览

回帖奖励 +2

true
false
——————————————————————————————————————————————————
是不是因为valueOf会将常用的值(-128 to 127)cache起来。当i值在这个范围时,就是当这个值在-128和127之间时,会用缓存保存起来,供多次使用,以节约内存。 如果不在这个范围内,则创建一个新的Integer对象。
我也是新人,学习中……

评分

参与人数 1技术分 +1 收起 理由
黄文伯 + 1 支持一下!

查看全部评分

回复 使用道具 举报
因为数据在byte范围内,对于新特性,如果该数据已经存在,则不会再开辟空间
所以: Integer a=127   
          Integer b=127
a==b;            为:true
Integer a=128
Integer b=128
a==b;            为:false

评分

参与人数 1技术分 +1 收起 理由
黄文伯 + 1 赞一个!

查看全部评分

回复 使用道具 举报
亲,请及时将"未解决"修改为"已解决"呀!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马