论Integer 类型值比较
java 中对于包装类比较,建议都用equals去比较
原因呢:
首先我们来看八大基本数据类型的比较
1==1 true
这是因为基本数据类型的值直接挂到变量上了,所以比较值的时候相等。
String a = new String("hello");
String b = new String("hello");
a == b false
这是因为值"hello"在堆内存中, 变量a是引用的String实例在堆内存中的地址。
所以a 和b为false
那么Integer也属于引用类型,所以建议比较时候用equals
不过integer它内部有IntegerCache , 对于 -128 ~ 127以内的数会在cache中产生,会复用已有对象 , 所以在这个区间内的数用 == 比较也是可以的。
论Integer 类型值比较