直接看代码:
Integer i1 = 127;
Integer i2 = 127;
Integer i3 = 128;
Integer i4 = 128;
System.out.println(i1 == i2);
System.out.println(i3 == i4);
System.out.println(i3 == 128);
---------------------结果------------------
true
false
true
原因:在java中将int转到Integer时调用的是Integer.valueof(int i)方法进行转换,而该方法里使用了缓存,缓存里存储了value为0-127的Integer对象。当参数值在该范围时,返回缓存对象。