在Java 中方法参数只有值传递,没有引用传递,像C#中 method(ref value....) 这种传引用参数的做法是不被支持的
public class StringTest {
public int i=1;
public StringTest(int i){
this.i=i;
}
public static void st(int in,StringTest st1,StringTest st2){
in=1;
st1.i=10;
st2=st1; //1
st2.i=20; //2
}
public String toString(){
return String.valueOf(i);
}
public static void main(String args[]){
StringTest st1=new StringTest(1);
StringTest st2=new StringTest(2);
int in=0;
st(in,st1,st2);
System.out.println(in);//输出:0 这说明他是传值,而不是传址(引用)
System.out.println(st1);//输出:20
System.out.println(st2);//我们发现无论是否注释掉位置2那一行,其输出:2 这里为什么是2呢?我们知道参数st2其实传递的是内存地址,而当把st1赋值个st2,其实改变的时st2这个变量的引用地址,因此当前的st2是没有变化的
//输出:2
}
}