敲黑板划重点-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值。