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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ankje 中级黑马   /  2015-3-9 23:46  /  815 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ankje 于 2015-3-9 23:49 编辑

看代码:
  1. Integer a = -128;
  2. Integer b = -128;
  3. System.out.println(a == b);//结果:true
  4. Integer x = -129;
  5. Integer y = -129;
  6. System.out.println(x == y);//结果:false
复制代码

为什么两个结果会不同?
原因:这是java的自动装箱的机制问题。如果装箱的是一个字节(即-128~127),那么数据会被共享,不会再另外开辟空间(对象),-129超出一个字节的范围,于是java会重新创建一对象,双等号是要求地址和值都要相同,两个对象对应的当然是两个不同的地址,所以第二个打印的结果为false



2 个回复

倒序浏览
受教了,整的挺好
回复 使用道具 举报
挺好                                    
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马