JAVA Integer比较大小 使用==需注意有坑
敲黑板划重点
-128 到 127的两个 Integer 对象,怎么比较都一样,超出此范围的的只有 equals() 时才相等。
Java自动装箱是对于从 -128 到 127 之间的信息值,它们在被装箱为对象数据后会在内存中被重用,也就是对于相同的值,返回的是同一个对象(这一点,类似 String 类)。
直接与数值比较时(即 a==300000 这样),大概是拆箱比较了,就跟 int 的比较一样了,所以该相等还是相等的。
所以, 就会出现如下情况
Integer a = 128;
Integer b = 128;
System.out.println(a==b); //false
System.out.println(a.equals(b)); //true
比较Integer大小可以使用,Integer.intValue进行拆箱,比较的就是int值。