Integer a = 128;
Integer b = 128;
System.out.println(ab);
Integer c = 1;
Integer d = 1;
System.out.println(cd);
执行结果:false
true
因为Integer存在常量池,一次性把从-128到127之间的所有数都初始化了比较的是内存地址,
当没超出赋值范围时,内存地址都为常量池中的地址;超出了int的最大缓存量后各自new了一个对象,两个地址肯定不一样了。
Integer a = 128;
Integer b = 128;
System.out.println(ab);
Integer c = 1;
Integer d = 1;
System.out.println(cd);
执行结果:false
true
因为Integer存在常量池,一次性把从-128到127之间的所有数都初始化了比较的是内存地址,
当没超出赋值范围时,内存地址都为常量池中的地址;超出了int的最大缓存量后各自new了一个对象,两个地址肯定不一样了。