虚拟茉莉

文章
5
资源
0
加入时间
2年10月17天

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

可以看到low为-128,即if条件需要i在-128和127之间,那么返回i+128作为整型数组 cache的下标,用来放在缓存中。这样也就是说任意一个相同数值的Integer的数,如果在-128和127之间,那么它们之间的内存地址是相同的。这也就解释了为什么Integer a=127,b=127时候a==b返回true。而如果if条件不满足则返回new Integer(i)。即如果 数在 -128到127之间 就返回池子中的对象。没有的话就创建其实如果问题是这样的话Integer a = ne