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

java
class B {
int num=5;//原值
}
public class exp2_7 {
public static void main(String[] args){
int a=2;
func1(a);//改变
System.out.println(a==2);//与原值比较

B b=new B ();
func2(b);//改变
System.out.println(b.num==5);//与原值比较
}

static void func1(int t){
t++;//改变基本类型的数据.
}
static void func2(B t){
t.num++;//改变对象中的数据.
}
}
这个算法的结果是?怎么来的

------解决方案--------------------
true false


------解决方案--------------------
答案是true false ,你对参数传递方式只有一种理解的有问题,我看java编程思想的时候作者也不太想争论这一点,false的结果也很容易解释,在执行方法的时候复制了指向B对象的引用,然后通过这个引用改变了B对象的值,原来B对象的引用没有改变,引用的对象没变,但是对象本身值改变

非得说参数本身不受影响也就是只B对象的引用指向没变