本帖最后由 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
|
|