Java参数传递方式总结
2011-06-18 11:38
295 查看
经过测试,基本得出结论如下:
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;
}
}
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;
}
}
相关文章推荐
- Java方法参数传递方式总结
- Java参数传递方式总结
- Java参数传递方式总结
- Java 函数参数传递方式详解
- java参数的传递方式
- Java方法参数的传递方式
- 【matlab】Matlab的GUI参数传递方式总结
- Java中的参数传递方式
- Java函数参数传递方式详解
- 关于"Java中方法参数的传递方式"的探讨
- Java中的参数传递方式
- 【Java】关于Java中参数传递方式与C++的比较
- mybatis的三种参数传递映射方式总结
- java 参数传递方式
- Java函数参数传递方式详解
- Java方法的参数传递方式为: 值传递
- Java中的参数传递方式
- 详解java中给方法传递参数的两种方式:按值传递,引用传递
- java学习总结(16.05.24)向main方法的形参传递参数的方法
- 【Practical Java】实践1:参数以by value方式而非by reference方式传递