Java Integer类中的添加操作

Zac*_*Cat 2 java integer

我在面试时遇到了一个Java问题,如下所示

public static boolean isSame(Integer a, Integer b){
 return a==b;
}

public static void main(String[] arg){
 int i=0;
 for(int j=0;i<500;++i,++j){
     if(isSame(i,j)){
         continue;
     }
     else break;
     }
}
Run Code Online (Sandbox Code Playgroud)

问题是"我=?" 最后.

我以为我最后会500.但是当我在Eclipse中尝试它时我= 128!

所以我想知道这里发生了什么.

谢谢

Boh*_*ian 7

比较Integer使用的两个对象==只有true在它们是同一个对象(即同一个确切的实例)时才会返回,即无论它们的如何.

然而,这些值-128127进行缓存,所以自动装箱这些值(当你传递一个正在发生int在作为Integer参数)总是返回相同的实例Integer给定值.

超出此范围的值始终会导致Integer创建新实例.