public static void print(int i) {
int a = i;
Integer b = i;
Integer c = Integer.valueOf(i);
Integer d = new Integer(i);
Object e = i;
}
1.a==b; //ture
a==c ;//true
a==d ;//true
a==e ;//true 当与int类型 比较时候 ,nteger会自动拆箱成int比较
2.i=200时, i==100时,
b==c; //false b==c; //true
b==d; //false b==d; //false
b==e ; //false b==e ; //true
当使用直接赋值的时候( 如Integer b = 300;), 实际调用的就是 Integer的valueOf()方法。valueOf()方法返回一个integer对象,但是在返回前,会去进行一个判断,integer里面有个缓存对象数组,用以存放值在【-128,127】之间的对象,1.如果valueOf()传入的值不在区间【-128,127】,直接创建对象返回,2.如果在该区间但是不存在当前对象,则创建后存入对象数组中并返回,3.如果有,则直接返回引用。
Integer d = new Integer(i);方法直接创建新对象并不会存入对象数组中。
Object e = i;与integer比较的时候会自动转换成integer类型,等同于 Integer b = i;