分情况讨论:
1.都为Integer 的比较
new:一旦new,就是开辟一块新内存,结果肯定是false
不new:需看范围, Integer做了缓存,当你取值在-128至127范围时,会采用缓存的对象,所以会相等;当不在这个范围,内部创建新的对象,此时不相等
2.Integer 和int 的比较
比较的是数值,Integer会做拆箱的动作,来跟基本数据类型做比较
Integer i1 = new Integer(12);
Integer i2 = new Integer(12);
System.out.println(i1 == i2); // false
Integer i3 = 126;
Integer i4 = 126;
System.out.println(i3 == i4); // true 当在-128—127范围时,用缓存
int i5 = 126;
System.out.println(i3 == i5); // true 自动拆箱
Integer i6 = 128;
Integer i7 = 128;
System.out.println(i6 == i7); // false
int i8 = 128;
System.out.println(i6 == i8); // true