经过测试,基本得出结论如下:
1、 如果参数是基本数据类型(int、long等),传值。方法内部改变参数值,外部值不变。
2、 如果参数是对象类型,传地址。方法内部改变对象值,外部对象值改变。但是,如果方法内部调用new重新构建参数对象,外部对象仍然记录构造前的对象值。
3、 查看网上资料,说对于远程调用,不论是基本类型还是对象类型,都是传值。未经测试。
/**
* 参数传递测试
*
* @author Administrator
*
*/
public class ParamTransferTest {
public static void changeI(int i) {
i++;
}
public static void changeSimpleParam(SimpleParam sp) {
sp.i = 10;
sp = new SimpleParam();
}
public static void main(String[] args) {
int i = 1;
System.out.println("origin i=" + i);
ParamTransferTest.changeI(i);
System.out.println("changeI(i)=" + i);
SimpleParam sp = new SimpleParam();
sp.setI(i);
System.out.println("SimpleParam.setI(i)=" + i + ", sp.i=" + sp.i);
changeSimpleParam(sp);
System.out.println("changeSimpleParam()=" + sp.i);
}
}
class SimpleParam {
public int i;
public void setI(int i) {
i++;
this.i = i;
}
}