当基本正数数据类型在装箱为Integer类型时,0~127之间的数字装箱后会被缓存起来,当下次对同样的数字装箱时 两个Integer对象是相等的,即指向同一块内存,而当数字超过127后,自动装箱后不会被缓存,再次装箱同样大于127的数字时, 两个Integer对象是不相等的。以上事例就是通常所说的享元设计模式。
对于那些非常小但是又需要在系统的很多地方都需要用到它的时候,我们需要把它缓存起来,以便下次再次使用,减少了创建对象的开销。
public class Test {
public static void main(String[] args) {
Integer a1 = new Integer(4);
Integer a2 = new Integer(4);
System.out.println(a1 == a2); //false
Integer i1 = 13;
Integer i2 = 13;
System.out.println(i1 == i2); //true
Integer i3 = 128;
Integer i4 = 128;
System.out.println(i3 == i4); //false
Integer i5 = Integer.valueOf(3);
Integer i6 = Integer.valueOf(3);
System.out.println(i5 == i6); //true
Integer i7 = Integer.valueOf(127);
Integer i8 = Integer.valueOf(127);
System.out.println(i7 == i8); //true
}
}