黑马程序员技术交流社区
标题:
分享一个囧事^^
[打印本页]
作者:
ankje
时间:
2015-3-9 23:46
标题:
分享一个囧事^^
本帖最后由 ankje 于 2015-3-9 23:49 编辑
看代码:
Integer a = -128;
Integer b = -128;
System.out.println(a == b);//结果:true
Integer x = -129;
Integer y = -129;
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