CODE
@Test
public void intergeCompareTest() {
Integer a = 127;
Integer b = 127;
System.out.println(a == b); //true
System.out.println(a.equals(b)); //true
System.out.println("*************");
a = 128;
b = 128;
System.out.println(a == b); //false
System.out.println(a.equals(b)); //true
System.out.println("*************");
a = -127;
b = -127;
System.out.println(a == b); //true
System.out.println(a.equals(b)); //true
System.out.println("*************");
a = -128;
b = -128;
System.out.println(a == b); //true
System.out.println(a.equals(b)); //true
System.out.println("*************");
a = -129;
b = -129;
System.out.println(a == b); //false
System.out.println(a.equals(b)); //ture
System.out.println("*************");
}
结果:
Tips:
1.Integer是包装类型,==比较的是地址
2.JAVA的Integer有IntegerCache,会缓存[-128~127]之间的对象
3.Integer.equals()方法是比较的其真正值大小
所以,在[-128,127]中的Integer,初始化后再读取的是缓存,所以相等,反之,若不在此区间内,再不相等。
Ps:
Integer.equals()方法代码截图:
最后:
慎用Integer == Integer判断!!!