自动装箱:
例如:Integer i = 10; 相当于Integer i = Integer.valueOf(10);
自动拆箱:
例如:Integer i = 10;
int t = i; 相当于int t = i.intValue();
引起的陷阱:
Integer a1 = 100;
Integer b1 = 100;
System.out.println(a1 == b1);
Integer a2 = 128;
Integer b2 = 128;
System.out.println(a2 == b2);
第一个输出是 true 第二个是false。
先看看Integer.java的源码:
public
static
Integer valueOf(
int
i) {
if
(i >= -
128
&& i <= IntegerCache.high)
// 没有设置的话,IngegerCache.high 默认是127
return
IntegerCache.cache[i +
128
];
else
return
new
Integer(i);
}