我在面试时遇到了一个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!
所以我想知道这里发生了什么.
谢谢
比较Integer使用的两个对象==只有true在它们是同一个对象(即同一个确切的实例)时才会返回,即无论它们的值如何.
然而,这些值-128来127进行缓存,所以自动装箱这些值(当你传递一个正在发生int在作为Integer参数)总是返回相同的实例Integer给定值.
超出此范围的值始终会导致Integer创建新实例.
| 归档时间: |
|
| 查看次数: |
1179 次 |
| 最近记录: |