装箱: 自动将基本数据类型转换为包装器类型;Integer.valueOf(i);
拆箱: 自动将包装器类型转换为基本数据类型。Integer.intValue();
例子:
Integer i1 = 100;
Integer i2 = 100;
Integer i3 = 200;
Integer i4 = 200;
System.out.println(i1==i2); true
System.out.println(i3==i4); false
在通过valueOf方法创建Integer对象的时候,如果数值在[-128,127]之间,便返回指向IntegerCache.cache中已经存在的对象的引用;否则创建一个新的Integer对象。
上面的代码中i1和i2的数值为100,因此会直接从cache中取已经存在的对象,所以i1和i2指向的是同一个对象,而i3和i4则是分别指向不同的对象。
享元模式代码:
public static Integer valueOf(int i) {
if (i &g