package JavaCloumn;
public class TestIntegerCache {
public static void main(String[] args) {
Integer i2 = 100;
Integer i3 = 100;
System.out.println(i2 == i3); // true
/*
* 获取的是Java已经缓存(-128 到 127 之间)好的了对象,i2 跟 i3 是同一个对象
* 所以返回 true
*/
Integer i4 = 1000;
Integer i5 = 1000;
System.out.println(i4 == i5); // false
/*
* 因为 1000 已经超出了缓存的范围了,所以 i4 跟 i5 是分别 new 的两个对象
* 所以返回 false
*/
System.out.println(i4.equals(i5)); // true
/*
* Ineger 已经重写了 equals 方法, 比较的是数值大小
* 所以返回 true
*/
}
}
要点:###
- 比较对象,一定要使用equlas()方法,不然会产生一些让人疑惑的代码
- Integer 中 128 到 127的数是已经缓存好了的,创建该范围内的对象时,得到的只是缓存中的一份引用,不会创新的对象。