Integer存储在堆中,相应于int的类类型,称为对象包装,其实上述的Integer w1=200; Integer w2=200;可以写成 Integer w1= new Integer(200); Integer w2 = new Integer(200);当你直接给一个Integer对象一个int值的时候,其实它调用了valueOf方法
Integer的封装
,public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) { // must cache
return IntegerCache.cache[i + offset];
}
return new Integer(i);
}
可见Integer对象初始化时是-128~127的范围,就不需要再重新定义申请空间,
所以v1,v2在范围内,调用valueOf,结果为true,w1,w2结果为false
|