本帖最后由 张权 于 2013-1-2 14:40 编辑
public class IntegerDemo4 {
public static void main(String[] args) {
Integer i1 = 100;//Integer i1 = Integer.valueOf(100);
Integer i2 = 100;
Integer i3 = 200;
Integer i4 = 200;
System.out.println(i1==i2);//true
System.out.println(i3==i4);//false
}
}
关于这个问题,据源码的推测是 i1与i2的值在一个字节范围内,因此没有new ,那么为什么不new , i1==i2是true呢? 之前我 的理解就是,没有NEW,他们都是在缓存里面, 然后我就突发奇想,既然这样,他们比较的是内存
地址,都是在缓存, 那么我定义 i1 =100 i2 = 10 也是在一个字节范围内,那么i1 == i2应该也就是true了,比较地址值嘛,,可事实上是 false,这就说明我之前的理解是错误的,谁能说下自己的理解? |
|