为什么Integer a = 127,b = 127;时a==b为true,而Integer c = 128,d = 128;时a==b为false?

Integer a = 128;
Integer b = 128;
System.out.println(ab);
Integer c = 1;
Integer d = 1;
System.out.println(c
d);

执行结果:false
true

因为Integer存在常量池,一次性把从-128到127之间的所有数都初始化了比较的是内存地址,
当没超出赋值范围时,内存地址都为常量池中的地址;超出了int的最大缓存量后各自new了一个对象,两个地址肯定不一样了。


版权声明:本文为weixin_49640815原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。