日期:2014-05-20  浏览次数:20704 次

大哥大姐看看下面代码输出啥!!!!!!!!!!!!!!!!
public class test{
static void founc(java.lang.Integer i){
int val = i.intValue();
val +=3;
i = new java.lang.Integer(val);
}
public static void main(String[] args){
java.lang.Integer i = new java.lang.Integer(1);
founc(i);
System.out.println(i.intValue());

}

}

还有为毛呢还有为毛呢还有为毛呢还有为毛呢还有为毛呢
------解决方案--------------------
进founc 方法时,相当于拷贝了一份i的值进去了,并不影响main 方法中的i值。
------解决方案--------------------
值传递,这个函数中的内容丝毫不会影响main中的变量;
值传递,会生成一个临时变量用来保存传的值,但也仅仅是保存而已;
------解决方案--------------------
楼主查一下java中的不可变对象,他们作为参数传递时,只能传递值过去,不可传引用。
基本类型的包装类,都属于不可变对象,他们一旦初始化,其值变不可可变。