黑马程序员技术交流社区

标题: 分享一个囧事^^ [打印本页]

作者: ankje    时间: 2015-3-9 23:46
标题: 分享一个囧事^^
本帖最后由 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




作者: 123412    时间: 2015-3-10 07:10
受教了,整的挺好
作者: aawenwei    时间: 2015-3-10 09:55
挺好                                    




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