posts - 0,  comments - 3,  trackbacks - 0

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 李桢 阅读(496) 评论(0)  编辑  收藏 所属分类: java
<2025年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

留言簿(1)

文章分类

文章档案

搜索

  •  

最新评论