楼主看下面的注释,不知道我这样理解有没有错,我是这样想的,希望对你有帮助
public class Test2{
public static void add(Integer i){
int val=i.intValue();
val+=3;
i=new Integer(val);
/*
* 自动拆箱,i获得实例化传的参值0,在赋值给val,然后val在加3这时val的值是3
* 而i又重新实例化了,传入的值是val,所以打印就是3
*/
System.out.println( i ); //这里打印是3
}
public static void main(String args[]){
Integer i=new Integer(0);
add(i);
/*
*因为你定义了一个Integer i并实例化传了个参数0 ,这里就是所谓的自动装箱。
*你用i调用了intValue(),得到对象里面的值
*/
System.out.println(i.intValue()); //为什么这里结果是 0 ,难道没有调用到那个方法么?
}
}
|