public class ParamTester{
public int memberVariable=0; public static void main(String args[]){ int param1=0;
ParamTester param2=new ParamTester();
ParamTester param3=new ParamTester();
int param4[0]={0};
changeParameter(param1, param2, param3, param4); System.out.println("param1=" +param1);
System.out.println("param2.memberVariable="+param2.memberVariable);
System.out.println("param3.memberVariable=" + param3.memberVariable);
System.out.println("param4[0]="+param4[0]);
} public static void changeParameter(int param1, ParamTester param2, ParamTester param3, int [] param4){
param1=1;
param2.memberVariable=1;
param3=new ParamTester();
param3.memberVariable=1;
param4[0]=1;
}
}最后打印出:
0
1
0
1我不明白的是为什么param1,param2,param4 同样作为参数传给changeParameter,
最后param1的值是0,而param2.memberVariable跟param4[0]的值是1。
public int memberVariable=0; public static void main(String args[]){ int param1=0;
ParamTester param2=new ParamTester();
ParamTester param3=new ParamTester();
int param4[0]={0};
changeParameter(param1, param2, param3, param4); System.out.println("param1=" +param1);
System.out.println("param2.memberVariable="+param2.memberVariable);
System.out.println("param3.memberVariable=" + param3.memberVariable);
System.out.println("param4[0]="+param4[0]);
} public static void changeParameter(int param1, ParamTester param2, ParamTester param3, int [] param4){
param1=1;
param2.memberVariable=1;
param3=new ParamTester();
param3.memberVariable=1;
param4[0]=1;
}
}最后打印出:
0
1
0
1我不明白的是为什么param1,param2,param4 同样作为参数传给changeParameter,
最后param1的值是0,而param2.memberVariable跟param4[0]的值是1。
param2在作参数传递的时候是按引用传递的,就是说在changeParameter里边的那个param2像一个指针一样,指向外边那个param2的地址,改变的其实是外边的param2的值。
而param4是按值传递的,方法changeParameter里边的那个param4可以说是外边那个param4的克隆,它们不是同一个变量,分别在内存里占两个位置,但值是一样的。改变其中一个变量的值不影响另一个变量。
之前那个帖子好像param4是个整数..晕
怎么改了
int param4[0]={0};应该是
int param4[]={0};