int a=100;int b=100;
System.out.println(a==b);结果true
Integer c=new Integer(100);
Integer d=new Integer(100);
System.out.println(c==d);结果false;
以上都是JDK1.5版本以前的
新改动:
Integer aa=100;
Integer bb=100;
System.out.println(aa==bb);结果true;
Integer aa=100;在以前的版本中是不允许的。但在JDK1.5后续版本中可以这样写。
再看这两句:
Integer aa=200;
Integer bb=200;
System.out.println(aa==bb);结果false;
当数值范围是[-128,127]时,是直接从缓存中取,当在范围之外时,生成一个新对象。附上JDK源代码
private static class IntegerCache {
private IntegerCache(){}
static final Integer cache[] = new Integer[-(-128) + 127 + 1];
static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Integer(i - 128);
}
}
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);
}
posted on 2007-07-01 10:32
李桢 阅读(495)
评论(0) 编辑 收藏 所属分类:
java